python中的交互式pcolor

时间:2015-06-12 14:48:30

标签: python-2.7 matplotlib plot interactive

我有两个大小不等的数组(Number_of_time_steps,N1,N2)。每个表示在Number_of_time_steps的大小为N1xN2的平面中的速度,在我的情况下为12,000。这两个阵列来自两个流体动力学模拟,其中一个点在时间0处稍微扰动,我想研究由网格中每个点的速度扰动引起的差异。为此,对于每个时间步,我制作一个包含4个子图的图:平面1的pcolor图,平面2的pcolor图,平面之间的差异,以及对数比例中的平面之间的差异。我使用matplotlib.pyplot.pcolor来创建每个子图。

这可以轻松完成,但问题是我最终会得到12,000个这样的图(在磁盘上保存为.png文件)。相反,我想要一种交互式绘图,我可以在其中输入时间步长,它将从两个现有数组中的值将4个子图更新为相应的时间步。

如果有人知道如何解决这个问题,请高兴听到。

2 个答案:

答案 0 :(得分:1)

对于交互式图形,您应该查看Bokeh(http://bokeh.pydata.org/en/latest/docs/quickstart.html)。您可以创建一个滑块,显示您想要查看的时间片。

答案 1 :(得分:0)

如果你可以在%matplotlib # set the backend import matplotlib.pyplot as plt fig,((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, sharex='col', sharey='row') def make_plots(timestep): # Clear the subplots [ax.cla() for ax in [ax1,ax2,ax3,ax4]] # Make your plots. Add whatever options you need ax1.pcolor(array1[timestep]) ax2.pcolor(array2[timestep]) ax3.pcolor(array1[timestep]-array2[timestep]) ax4.pcolor(array1[timestep]-array2[timestep]) # Make axis labels, etc. ax1.set_xlabel(...) # etc. # Update the figure fig.show() # Plot some timesteps like this make_plots(0) # time 0 # wait some time, then plot another make_plots(100) # time 100 make_plots(12000) # time 12000 内运行,你可以创建一个函数来绘制给定的时间步长

{{1}}