Python 每5度绘制一个点的极坐标图?

Python 每5度绘制一个点的极坐标图?,python,image,plot,polar-coordinates,Python,Image,Plot,Polar Coordinates,如果在度圆上每隔5度绘制一个唯一值,我想绘制一个极坐标图。我真的不知道该问什么问题,但我遇到了麻烦。这是我目前的代码: import numpy as np import matplotlib.pyplot as plt import csv r = csv.reader(open('data.csv')) #data is a list of 73 data points taken at each 5 degree increment theta = (0,360,5) #plot im

如果在度圆上每隔5度绘制一个唯一值,我想绘制一个极坐标图。我真的不知道该问什么问题,但我遇到了麻烦。这是我目前的代码:

import numpy as np
import matplotlib.pyplot as plt
import csv

r = csv.reader(open('data.csv'))
#data is a list of 73 data points taken at each 5 degree increment
theta = (0,360,5)

#plot image
img = plt.imread("voltage_abs.png")
fig, ax = plt.subplots()
ax.imshow(img)
ax.imshow(img)
ax = plt.subplot(111, projection='polar')
ax.plot(theta, r)
ax.set_rmax(2)
ax.set_rticks([0.5, 1, 1.5, 2])  # less radial ticks
ax.set_rlabel_position(-22.5)  # get radial labels away from plotted line
ax.grid(True)

ax.set_title("Polar", va='bottom')
plt.show()

我的错误要么只是在绘图上没有显示,要么是r和θ的大小不匹配的问题。感谢您的帮助

您没有正确使用csv阅读器。而是使用numpy的函数。我制作了自己的data.csv文件,它是73个数字,增加了2个

import numpy as np
import matplotlib.pyplot as plt


r =  np.genfromtxt('data.csv',delimiter=',')
#data is a list of 73 data points taken at each 5 degree increment
theta = np.linspace(0, 2 * np.pi, 73)

ax = plt.subplot(111, projection='polar')
ax.plot(theta, r)
ax.set_rmax(2)
ax.set_rticks([0.5, 1, 1.5, 2])  # less radial ticks
ax.set_rlabel_position(-22.5)  # get radial labels away from plotted line
ax.grid(True)

ax.set_title("Polar", va='bottom')
plt.show()

在您发布的代码中,变量
theta
是一个包含三个元素的元组,我认为这不是您想要的。它还需要以弧度为单位。它应该类似于
theta=np.linspace(0,2*np.pi,73)
。所以我做了那个更改并收到了这个错误:
TypeError:type'\u csv.reader'的对象没有len()
。我需要将这个变量保存为数组吗?那是因为r不是你所说的列表。。。它是一个csv.reader对象。您必须对其进行迭代才能获得值,在您的示例中,这是一行数据点。。。只需执行
r=list(csv.reader(open('data.csv','r'))[0]
现在我有一个错误:
ValueError:x和y必须具有相同的第一维度,但具有形状(73,)和(2,)
我已经完成了这项工作,谢谢!所以我有一个错误:
ValueError:x和y必须具有相同的第一维度,但具有形状(73,)和(1,)
我猜这是在我的cvs文件中的某个地方?它当前是一列73个值。执行print r.shape()并查看发生了什么。您可能需要转置数据,即r.TI正在尝试在该绘图的背景中添加图片。我在原始问题中更新了上面的代码,但无法在图像顶部绘制。有什么建议吗?这个问题已经回答了。如果您仍有问题,请提交另一个问题。