Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Windrose库在Python中绘制风玫瑰_Python - Fatal编程技术网

使用Windrose库在Python中绘制风玫瑰

使用Windrose库在Python中绘制风玫瑰,python,Python,我有风的数据,包括风速和风向 然而,我的风向是逆时针的。也就是说,我的数据的45度实际上是西北角 在Python中使用Windrose是否有机会改变这一点 我有以下代码来绘制风玫瑰: from windrose import WindroseAxes import matplotlib.pyplot as plt theta = [0, 60, 120, 180, 240, 300] speed = [10, 0, 10, 40, 50, 40] ax = WindroseAxes.from

我有风的数据,包括风速和风向

然而,我的风向是逆时针的。也就是说,我的数据的45度实际上是西北角

在Python中使用Windrose是否有机会改变这一点

我有以下代码来绘制风玫瑰:

from windrose import WindroseAxes
import matplotlib.pyplot as plt

theta = [0, 60, 120, 180, 240, 300]
speed = [10, 0, 10, 40, 50, 40]

ax = WindroseAxes.from_ax()
ax.bar(theta, speed)
plt.show()

风玫瑰的方向由
theta
列表确定。如果90°不在您希望的一侧,您可以将所有θ角转换为相反的角度,从而创建原始图像的镜像

让我们假设您的原始代码如下所示

from windrose import WindroseAxes                                                                                                                                                                                                                                                                                                                                                                                                                                                            
import matplotlib.pyplot as plt                                                                                                                                                                                                                                                                                                                                                                                                                                                              

theta = [0, 90]                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
speed = [10, 10]                                                                                                                                                                                                                                                                                                                                                                                                                                                                             

ax = WindroseAxes.from_ax()                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
ax.bar(theta, speed)                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
plt.show()
这显示了一个在东边有条的图形,而你想要它在西边(或相反的方向)

如果取相反的角度,则交换图形。以下代码符合您的目的

from windrose import WindroseAxes
import matplotlib.pyplot as plt

theta = [0, 90]
theta = [360 - x for x in theta] # Take the opposite angle
speed = [10, 10]

ax = WindroseAxes.from_ax()
ax.bar(theta, speed)
plt.show()

风玫瑰的方向由
theta
列表确定。如果90°不在您希望的一侧,您可以将所有θ角转换为相反的角度,从而创建原始图像的镜像

让我们假设您的原始代码如下所示

from windrose import WindroseAxes                                                                                                                                                                                                                                                                                                                                                                                                                                                            
import matplotlib.pyplot as plt                                                                                                                                                                                                                                                                                                                                                                                                                                                              

theta = [0, 90]                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
speed = [10, 10]                                                                                                                                                                                                                                                                                                                                                                                                                                                                             

ax = WindroseAxes.from_ax()                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
ax.bar(theta, speed)                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
plt.show()
这显示了一个在东边有条的图形,而你想要它在西边(或相反的方向)

如果取相反的角度,则交换图形。以下代码符合您的目的

from windrose import WindroseAxes
import matplotlib.pyplot as plt

theta = [0, 90]
theta = [360 - x for x in theta] # Take the opposite angle
speed = [10, 10]

ax = WindroseAxes.from_ax()
ax.bar(theta, speed)
plt.show()

您的代码示例应该是一个完整的MVP。它不按原样运行,因为缺少导入和变量定义。要运行它,我目前被困在
cm.秋
。这是什么?你的代码示例应该是一个完整的MVP。它不按原样运行,因为缺少导入和变量定义。要运行它,我目前被困在
cm.秋
。这是什么?嗨,我的θ数据不是从最小值到最大值排序的。它可能看起来像θ=[240,-50,60,345,-15]。因此,我不得不改变定义,而仅仅交换θ也无济于事。你能用θ的实际定义更新你的问题吗?如果我能很好地理解你的目标,我想类似于
theta=map(lambda x:360-x,theta)
的方法可能会奏效。嗨,不幸的是我不能发布数据。。但它的定义是0度是向北,然后是逆时针方向。所以90度是W等。数据是28000个数据点,包括风速和方向。好的,知道了。奇怪的是,我的安装没有任何修改。90°是东方。无论如何,我编辑我的答案以反映我对你的问题的理解。谢谢你的帮助!我还有一个关于温德罗斯的问题。你知道为什么我的半径标签显示的是风速而不是百分比吗?嗨,我的θ数据不是从最小到最大排序的。它可能看起来像θ=[240,-50,60,345,-15]。因此,我不得不改变定义,而仅仅交换θ也无济于事。你能用θ的实际定义更新你的问题吗?如果我能很好地理解你的目标,我想类似于
theta=map(lambda x:360-x,theta)
的方法可能会奏效。嗨,不幸的是我不能发布数据。。但它的定义是0度是向北,然后是逆时针方向。所以90度是W等。数据是28000个数据点,包括风速和方向。好的,知道了。奇怪的是,我的安装没有任何修改。90°是东方。无论如何,我编辑我的答案以反映我对你的问题的理解。谢谢你的帮助!我还有一个关于温德罗斯的问题。你知道为什么我的半径标签显示的是风速而不是百分比吗?