有两种解决方案:
(a)从矩形创建轴
首先,这里已经存在一个类似的问题:如何将特定轴添加到matplotlib子图中?
在那里,解决方案是在图中创建一个
rect具有新子图轴坐标的矩形,然后调用
ax = WindroseAxes(fig, rect)
一个更容易理解的例子是
from windrose import WindroseAxesfrom matplotlib import pyplot as pltimport numpy as npws = np.random.random(500) * 6wd = np.random.random(500) * 360fig=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子图功能会更好。这里
提出的一个建议是将其注册为对matplotlib的投影。为此,需要在site-packages /
windrose中编辑文件windrose.py,如下所示:
WindroseAxes
from matplotlib.projections import register_projection
在文件的开头包括一个导入。然后添加一个名称变量:
class WindroseAxes(PolarAxes):name = 'windrose'...
最后,在windrose.py的末尾,添加:
register_projection(WindroseAxes)
完成后,您可以使用matplotlib轴的projection参数轻松创建windrose轴:
from matplotlib import pyplot as pltimport windroseimport matplotlib.cm as cmimport numpy as npws = np.random.random(500) * 6wd = np.random.random(500) * 360fig = 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()



