Python中的极地图问题,角度未被考虑在内。

3

我在处理一个极坐标图时遇到了一些问题。 我应该得到的图形是一个八字形(我的一些朋友在Origin和Excel中绘制了数据,它确实有效),但是看起来代码没有正确编写。 通过观察图形,我发现代码没有考虑我正在编写的角度(theta数组),但我不知道为什么会发生这种情况。 我已经尝试过一些其他代码并将角度写成弧度,但似乎都没有起作用。

import numpy as np
import matplotlib.pyplot as plt
from pylab import *
import matplotlib.pyplot as plt
from pylab import *
import numpy as np

r = np.array([11.7,12.1,10.1,6.6,3.1,1.5,2.3,5.2,
8.7,11.5,12,10.1,6.6,3.3,1.5,2.3,5.3,9.2,11.9])

theta =np.array([0,20,40,60,80,100,120,140,160,180,
200,220,240,260,280,300,320,340,360])

ax = plt.subplot(111, projection='polar')
ax.plot(theta,r)
ax.set_rmax(13)
ax.set_rticks([2,4,6,8,10,12])  # less radial ticks
ax.set_rlabel_position(-40)  # get radial labels away from plotted line
ax.grid(True)

ax.set_title("A line plot on a polar axis", va='bottom')
plt.show()

我也尝试过这个方法:

r3 = np.array([11.7,12.1,10.1,6.6,3.1,1.5,2.3,5.2,
8.7,11.5,12,10.1,6.6,3.3,1.5,2.3,5.3,9.2,11.9])

theta3 =np.array([0,20,40,60,80,100,120,140,160,180,
200,220,240,260,280,300,320,340,360])



fig = plt.figure()
ax = fig.add_subplot(111, projection='polar')
c = ax.scatter(theta3, r3)

1个回答

3

令人意想不到的是,极坐标图显示其θ轴为度数,但实际上它要求坐标以弧度为单位:

import numpy as np
import matplotlib.pyplot as plt

r = np.array([11.7,12.1,10.1,6.6,3.1,1.5,2.3,5.2,
              8.7,11.5,12,10.1,6.6,3.3,1.5,2.3,5.3,9.2,11.9])

theta =np.array([0,20,40,60,80,100,120,140,160,180,
                 200,220,240,260,280,300,320,340,360], dtype=float) # making sure it is float
# convert to radians
# theta *= np.pi/180.
theta = np.deg2rad(theta)

ax = plt.subplot(111, projection='polar')
ax.plot(theta,r)
ax.grid(True)

ax.set_title("A line plot on a polar axis", va='bottom')
plt.show()

在此输入图片描述

我没有找到任何明确说明这一点的文档(只有正确示例)。

你得到的奇怪图片来自于所有大于2pi的值都被折叠回0…2pi范围内。所以例如,20%2pi=1.15,转换后约为65度,这就是你绘图中实际位置的第二个值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接