我试图用windrose的4个子图来制作一个图形,但是我意识到windrose只有这样的轴:所以,如何用windrose绘制子图呢?
发布于 2017-03-11 10:27:50
有两种解决办法:
(a)从矩形创建轴
首先,这里已经有了一个类似的问题:如何向matplotlib子图中添加特定的轴?
在那里,解决方案是创建一个矩形rect,其中包含图中新的子图轴的坐标,然后调用ax = WindroseAxes(fig, rect)。
一个更容易理解的例子是
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,如下所示:
from matplotlib.projections import register_projection。完成之后,可以使用matplotlib轴的投影参数轻松地创建windrose轴:
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()发布于 2019-10-08 13:19:14
要使子图具有相同的规模(例如,对于月度数据),只需在函数中添加add_subplot rmax参数即可。对我来说:
ax = fig.add_subplot(nrows, ncols, month, projection="windrose", rmax = 50)发布于 2022-10-18 05:49:34
受公认答案( ImportanceOfBeingErnest)的启发,我使用以下方法将windrose添加到现有的子方案实例中:
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')https://stackoverflow.com/questions/42733194
复制相似问题