我有两个大小不等的数组(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个子图更新为相应的时间步。
如果有人知道如何解决这个问题,请高兴听到。
答案 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}}