gpt4 book ai didi

python - 使用 Windrose 模块绘制不同的子图

转载 作者:太空宇宙 更新时间:2023-11-03 16:32:34 26 4
gpt4 key购买 nike

我正在尝试使用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)....等等

我的第二个问题是,

生成绘图后,我想使用 time.sleep() 或类似的方法引入暂停

我尝试了一个简单的例子,其中:

  1. 我绘制了一些东西
  2. 然后使用 f.savefig() 将其导出为 png 格式
  3. 然后我介绍 sleep(20)
  4. 然后代码继续

但是虽然导出了正确的 png 却没有显示在屏幕上,代码继续。因为它不会引发任何错误,我想缺少一些东西,我应该在 sleep() 之前或之后添加

最佳答案

第一个问题:您不能将另一个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-')

你会得到这样的结果: enter image description here

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

关于python - 使用 Windrose 模块绘制不同的子图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37482079/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com