怎么用Python制作一个好玩炫酷的GIF动态图

Python011

怎么用Python制作一个好玩炫酷的GIF动态图,第1张

import sys

import numpy as np

import matplotlib.pyplot as plt

from matplotlib.animation import FuncAnimation

fig, ax = plt.subplots()

fig.set_tight_layout(True)

# 询问图形在屏幕上的大小和DPI(每英寸点数)

# 注意当把图形保存为文件时,需要为此单独再提供一个DPI

print('fig size: {0} DPI, size in inches {1}'.format(

 fig.get_dpi(), fig.get_size_inches()))

# 绘制一个保持不变(不会被重新绘制)的散点图以及初始直线

x = np.arange(0, 20, 0.1)

ax.scatter(x, x + np.random.normal(0, 3.0, len(x)))

line, = ax.plot(x, x - 5, 'r-', linewidth=2)

def update(i):

 label = 'timestep {0}'.format(i)

 print(label)

# 更新直线和轴(用一个新X轴标签)

 # 以元组形式返回这一帧需要重新绘制的物体

 line.set_ydata(x - 5 + i)

 ax.set_xlabel(label)

 return line, ax

if __name__ == '__main__':

 # 会为每一帧调用Update函数

 # 这里FunAnimation设置一个10帧动画,每帧间隔200ms

 anim = FuncAnimation(fig, update, frames=np.arange(0, 10), interval=200)

 if len(sys.argv) > 1 and sys.argv[1] == 'save':

  anim.save('line.gif', dpi=80, writer='imagemagick')

 else:

  # Plt.show()会一直循环动画

  plt.show()

可以生成下面这种图

你好,下面是一个画动态图的例子。

import matplotlib.pyplot as plt

fig, ax = plt.subplots()

y1 = []

for i in range(50):

y1.append(i) # 每迭代一次,将i放入y1中画出来

ax.cla() # 清除键

ax.bar(y1, label='test', height=y1, width=0.3)

ax.legend()

plt.pause(0.1)