python – 为极坐标创建一个meshgrid
作者:互联网
我想使用以下数组为极坐标创建网格.
R = 1.15
r = numpy.linspace(R,5,100)
theta = numpy.linspace(0,2*numpy.pi,145)
我用这种方式尝试了,使用numpy:
X,Y=numpy.meshgrid(r*numpy.cos(theta),r*numpy.sin(theta))
但我收到这个错误:
ValueError: operands could not be broadcast together with shapes (100,) (145,)
如何生成网格并显示点?
解决方法:
如果您只想要两个在极坐标网格上指定坐标r和theta的二维数组,请不要转换为笛卡尔坐标系.
为了澄清,你看到的错误是因为你不能在两个不等形状的数组之间执行逐元素乘法,这就是你所拥有的.
你应该这样称呼它:
radius_matrix, theta_matrix = numpy.meshgrid(r,theta)
然后您可以通过键入以下内容转换为笛卡尔坐标(如果确实需要):
X = radius_matrix * numpy.cos(theta_matrix)
Y = radius_matrix * numpy.sin(theta_matrix)
使用例如可以在极地网格上进行可视化. matplotlib:
import matplotlib.pyplot as plt
ax = plt.subplot(111, polar=True)
ax.plot(theta_matrix, radius_matrix, color='r', ls='none', marker='.')
如果您想要另一个例子,请查看polar plot demo.
或者,您可以通过绘制我们先前在笛卡尔网格上获得的笛卡尔坐标来绘制您绘制的极坐标网格:
plt.plot(X,Y, 'r. ')
plt.show()
标签:python,plot,numpy,polar-coordinates 来源: https://codeday.me/bug/20190519/1138030.html