首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >matplotlib中Windrose的子图

matplotlib中Windrose的子图
EN

Stack Overflow用户
提问于 2017-03-11 08:44:06
回答 3查看 7K关注 0票数 5

我试图用windrose的4个子图来制作一个图形,但是我意识到windrose只有这样的轴:所以,如何用windrose绘制子图呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-03-11 10:27:50

有两种解决办法:

(a)从矩形创建轴

首先,这里已经有了一个类似的问题:如何向matplotlib子图中添加特定的轴?

在那里,解决方案是创建一个矩形rect,其中包含图中新的子图轴的坐标,然后调用ax = WindroseAxes(fig, rect)

一个更容易理解的例子是

代码语言:javascript
复制
from windrose import WindroseAxes
from matplotlib import pyplot as plt
import numpy as np
ws = np.random.random(500) * 6
wd = np.random.random(500) * 360

fig=plt.figure()
rect=[0.5,0.5,0.4,0.4] 
wa=WindroseAxes(fig, rect)
fig.add_axes(wa)
wa.bar(wd, ws, normed=True, opening=0.8, edgecolor='white')

plt.show()

(b)增加一个投影

现在,创建这个矩形可能相当烦人,如果能够使用matplotlib子图功能会好得多。

这里提出的一个建议是将WindroseAxes注册为matplotlib中的投影。为此,您需要编辑站点-packages/windrose中的文件windrose.py,如下所示:

  1. 在文件的开头包含一个导入from matplotlib.projections import register_projection
  2. 然后添加一个name变量: 类WindroseAxes(PolarAxes):name = 'windrose‘.
  3. 最后,在windrose.py末尾添加: register_projection(WindroseAxes)

完成之后,可以使用matplotlib轴的投影参数轻松地创建windrose轴:

代码语言:javascript
复制
from matplotlib import pyplot as plt
import windrose
import matplotlib.cm as cm
import numpy as np

ws = np.random.random(500) * 6
wd = np.random.random(500) * 360

fig = plt.figure()
ax = fig.add_subplot(221, projection="windrose")

ax.contourf(wd, ws, bins=np.arange(0, 8, 1), cmap=cm.hot)

ax.legend(bbox_to_anchor=(1.02, 0))
plt.show()
票数 9
EN

Stack Overflow用户

发布于 2019-10-08 13:19:14

要使子图具有相同的规模(例如,对于月度数据),只需在函数中添加add_subplot rmax参数即可。对我来说:

代码语言:javascript
复制
ax = fig.add_subplot(nrows, ncols, month, projection="windrose", rmax = 50)
票数 1
EN

Stack Overflow用户

发布于 2022-10-18 05:49:34

受公认答案( ImportanceOfBeingErnest)的启发,我使用以下方法将windrose添加到现有的子方案实例中:

代码语言:javascript
复制
import matplotlib as plt
from windrose import WindroseAxes  
 
fig, axes = plt.subplots(1,2)
rect=axes[0,1].get_position()
wax=WindroseAxes(fig, rect)
wax.bar(wd, ws)
axes[0,1].axis('off')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42733194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档