Создать сетку для полярных координат

Я хочу создать сетку для полярных координат, используя следующие массивы.

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,) 

Как мне создать сетку и отобразить точки?

1 ответ

Решение

Не конвертируйте в декартову систему координат, если вы просто хотите два 2D-массива, которые определяют координаты 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='.')

Посмотрите демоверсию полярного сюжета, если хотите другой пример.

В качестве альтернативы, вы можете построить построенную вами полярную сетку, построив декартовы координаты, которые мы получили ранее на декартовой сетке:

plt.plot(X,Y, 'r. ')
plt.show()
Другие вопросы по тегам