matplotlib 使用windrose模块绘制不同的子情节

vptzau2j  于 2022-11-15  发布在  其他
关注(0)|答案(1)|浏览(213)

我尝试使用python中的windrose模块在子情节中绘制风玫瑰图。
https://pypi.python.org/pypi/windrose/
除了一些例子,没有太多的文档,所以我不知道如何使用它来绘制风玫瑰的不同子情节
我的尝试相当概括:

import pandas as pd
import matplotlib.pyplot as plt
from windrose import WindroseAxes
import matplotlib.cm as cm
from time import sleep

v=df.speed
d=df.direction
f = Figure(figsize=(16,9), dpi=60) 
a = f.add_subplot(131)
ax = WindroseAxes.from_ax()
a.set_axes(ax)
ax.bar(d,v, normed= True,opening=0.8, edgecolor='white')
ax.set_legend()

然后b = f.add_subplot(132) ....依此类推
第二个问题是
一旦我生成了情节,我想引入一个暂停与时间。sleep()或类似的东西
我尝试了一个简单的例子,其中:
1.我策划了一些事情
1.然后使用f.savefig()将其导出为png格式
1.然后我介绍睡眠(20)
1.则代码继续
但是,虽然它导出了正确的png,但它没有显示在屏幕上,代码继续。由于它没有引发任何错误,我想有一些东西丢失了,我应该在sleep()之前或之后添加

pgky5nke

pgky5nke1#

第一个问题:不能将另一个figure作为subplot放入现有的figure中(不幸的是,WindroseAxes.from_ax()创建了一个新的figure,并且不会仅更改axis示例)。
如果你写

fig = plt.figure(figsize=(16,9), dpi=60) 
wax = WindroseAxes.from_ax(fig=fig)
ax1 = fig.add_subplot(221)
wax.contourf(wd, ws, bins=np.arange(0, 8, 1), cmap=cm.hot)
wax.set_legend()
ax2 = fig.add_subplot(222)
ax2.plot([1,2,3,4], [1,4,9,16], 'k-')
ax3 = fig.add_subplot(223)
ax3.plot([1,2,3,4], [1,10,100,1000], 'b-')
ax4 = fig.add_subplot(224)
ax4.plot([1,2,3,4], [0,0,1,1], 'g-')

你会得到这样的结果:

第二个问题:要重绘绘图,你需要在更改绘图后添加plt.draw()。但如果你只想绘制一组图像,只需在每次需要时调用savefig,而不需要plt.show()

相关问题