MATPLOTLIB UNCHAINED
脉冲星的假信号频率的比较路径演示(主要是因为Joy Division的未知乐趣的封面而闻名)。
作者:Nicolas P. Rougier

import numpy as npimport matplotlib.pyplot as pltimport matplotlib.animation as animation# Fixing random state for reproducibilitynp.random.seed(19680801)# Create new Figure with black backgroundfig = plt.figure(figsize=(8, 8), facecolor='black')# Add a subplot with no frameax = plt.subplot(111, frameon=False)# Generate random datadata = np.random.uniform(0, 1, (64, 75))X = np.linspace(-1, 1, data.shape[-1])G = 1.5 * np.exp(-4 * X ** 2)# Generate line plotslines = []for i in range(len(data)):# Small reduction of the X extents to get a cheap perspective effectxscale = 1 - i / 200.# Same for linewidth (thicker strokes on bottom)lw = 1.5 - i / 100.0line, = ax.plot(xscale * X, i + G * data[i], color="w", lw=lw)lines.append(line)# Set y limit (or first line is cropped because of thickness)ax.set_ylim(-1, 70)# No ticksax.set_xticks([])ax.set_yticks([])# 2 part titles to get different font weightsax.text(0.5, 1.0, "MATPLOTLIB ", transform=ax.transAxes,ha="right", va="bottom", color="w",family="sans-serif", fontweight="light", fontsize=16)ax.text(0.5, 1.0, "UNCHAINED", transform=ax.transAxes,ha="left", va="bottom", color="w",family="sans-serif", fontweight="bold", fontsize=16)def update(*args):# Shift all data to the rightdata[:, 1:] = data[:, :-1]# Fill-in new valuesdata[:, 0] = np.random.uniform(0, 1, len(data))# Update datafor i in range(len(data)):lines[i].set_ydata(i + G * data[i])# Return modified artistsreturn lines# Construct the animation, using the update function as the animation director.anim = animation.FuncAnimation(fig, update, interval=10)plt.show()
