如何动画和更新标题,xlabel,ylabel?

时间:2017-04-13 07:13:14

标签: python-2.7 matplotlib

我是Matplotlib的新手。根据我在下面的代码,我想同时更新数据,标题,xlabel,ylabel。但是,标题和标签没有更新,但数据确实没有。有人可以给我一个解决方案吗?这对我很有帮助。谢谢。

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

def updata(frame_number):
    current_index = frame_number % 3
    a = [[1,2,3],[4,5,6],[7,8,9]]
    idata['position'][:,0] = np.asarray(a[current_index])
    idata['position'][:,1] = np.asarray(a[current_index])
    scat.set_offsets(idata['position'])
    ax.set_xlabel('The Intensity of Image1')
    ax.set_ylabel('The Intensity of Image2')
    ax.set_title("For Dataset %d" % current_index)


fig = plt.figure(figsize=(5,5))
ax = fig.add_axes([0,0,1,1])
idata = np.zeros(3,dtype=[('position',float,2)])
ax.set_title(label='lets begin',fontdict = {'fontsize':12},loc='center')
scat = ax.scatter(idata['position'][:,0],idata['position'][:,1],s=10,alpha=0.3,edgecolors='none')
animation = FuncAnimation(fig,updata,interval=2000)
plt.show()

1 个答案:

答案 0 :(得分:2)

运行代码,我看到一个空窗口。原因是轴跨越整个图形(fig.add_axes([0,0,1,1]))。要查看标题和标签,您需要使轴小于图形,例如通过

ax = fig.add_subplot(111)

此外,未定义轴的比例,因此动画将在轴限制之外发生。您可以使用ax.set_xlimax.set_ylim来阻止这种情况。

这是一个完整的运行代码:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

def updata(frame_number):
    current_index = frame_number % 3
    a = [[1,2,3],[4,5,6],[7,8,9]]
    idata['position'][:,0] = np.asarray(a[current_index])
    idata['position'][:,1] = np.asarray(a[current_index])
    scat.set_offsets(idata['position'])
    ax.set_xlabel('The Intensity of Image1')
    ax.set_ylabel('The Intensity of Image2')
    ax.set_title("For Dataset %d" % current_index)


fig = plt.figure(figsize=(5,5))
ax = fig.add_subplot(111)
idata = np.zeros(3,dtype=[('position',float,2)])
ax.set_title(label='lets begin',fontdict = {'fontsize':12},loc='center')
scat = ax.scatter(idata['position'][:,0],idata['position'][:,1],
                  s=25,alpha=0.9,edgecolors='none')
ax.set_xlim(0,10)
ax.set_ylim(0,10)
animation = FuncAnimation(fig,updata,frames=50,interval=600)
plt.show()

enter image description here