当前位置: 首页 > 面试题库 >

matplotlib中Windrose的子图

苏凯
2023-03-14
问题内容

我试图用风玫瑰的4个子图制作一个人物,但是我意识到风玫瑰只有这样的轴:ax = WindroseAxes.from_ax()那么,我如何用风玫瑰画一个子图?


问题答案:

有两种解决方案

(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子图功能会更好。这里
提出的一个建议是将其注册为对matplotlib的投影。为此,需要在site-packages /
windrose中编辑文件windrose.py,如下所示:WindroseAxes

  1. from matplotlib.projections import register_projection在文件的开头包括一个导入。
  2. 然后添加一个名称变量:

    class WindroseAxes(PolarAxes):
    name = 'windrose'
    ...
    
  3. 最后,在windrose.py的末尾,添加:

    register_projection(WindroseAxes)
    

完成后,您可以使用matplotlib轴的projection参数轻松创建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()


 类似资料:
  • 本文向大家介绍matplotlib 使用子图的子图网格,包括了matplotlib 使用子图的子图网格的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 问题内容: 我有这个代码。我想添加一个子图来绘制余弦函数。(我不想创建一个类)。第二个图也应动态更新 问题答案: 基本上,您可以使用与示例中的结构非常相似的结构。您只需要创建一个附加轴(子图)和第二条线对象:

  • 问题内容: 我在画布上添加了matplotlib图形,以便可以将其与pyqt集成到我的应用程序中。我环顾四周,似乎是要使用的方式(?),但是我无法像使用“普通”图一样向子图添加任何属性 人物设定 创建子图并添加数据 我想设置x和y标签,但如果这样做 如果我不使用子图就可以做到这一点 所以我想我的问题是,是否有可能进一步修改子图?或者我可以在不使用子图的情况下在pyqt画布中绘制图形,这样我就可以从

  • 第二个数字,我想补充: 我尝试: #在这里我添加了第四个数字,但我不知道我该怎么做...

  • 我想做的是在子地块中创建一个2x2图表。然后,对于每个图形,我将使用两个y轴。因此,我对每个图都使用了twinx()方法。您在我共享的图中看到的问题是,它没有显示第一行的xlabel和xtick。第二排,一切正常。我在图中用红色字体指定了这个问题(“没有xlabel和xticks!!!”)。 每个图都有自己的x轴和y轴,没有共享。 我对这段代码做了很多调整,缩小了问题制造者的范围。这是因为我在上面

  • 问题内容: 我正在尝试弹出一个图,以便用户可以确认拟合是否起作用,但不会挂断这样做的整个过程。但是,当窗口出现时,窗口中什么也没有,它是“无响应”。我怀疑与子流程功能之间的交互不良,因为此代码是前端代码,并且数据的处理都在C ++中运行。 下列子过程确实打开。如果我删除呼叫并使用,则绘图可以正常工作,但是整个过程将一直持续到关闭窗口。当用户查看图形时,我需要继续执行该过程。有没有办法做到这一点?