Как с помощью этой функции сгенерировать полярный график рассеяния, используя столбцы в качестве координат моего графика? - PullRequest
0 голосов
/ 19 апреля 2019

Я хочу создать полярный график моих углов (сгенерированный из функции, первый столбец) по отношению к значениям синуса этих углов (сгенерированный из той же функции, второй столбец).Немногие пробные методы дали график, но без точек.

 def GenerateTrigonometryTable(x):
A = np.arange (0,360,x) 
B = np.sin(A*np.pi/180)  
C = np.cos(A*np.pi/180)
D = []
F = []
G = []
for i in range (len(A)): 
    D.append(A[i])
for i in range (len(B)): 
    F.append(B[i])
for i in range (len(C)): 
    G.append(C[i])
table =([D],[F],[G]) 
table = np.dstack((table)) 
return (table) 

 Theta = (GenerateTrigonometryTable(5)[:,:,0])
 STheta = (GenerateTrigonometryTable(5)[:,:,1])
 ax1 = plt.subplot(111, projection='polar')
 ax1.plot(Theta, STheta)

 plt.show()
 plt.draw()

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

1 Ответ

0 голосов
/ 19 апреля 2019

Давайте сначала упростим вашу функцию:

def GenerateTrigonometryTable(x):
    A = np.arange (0,360,x) 
    B = np.sin(A*np.pi/180)  
    C = np.cos(A*np.pi/180)
    return np.dstack(([A],[B],[C])) 

t = GenerateTrigonometryTable(5)
print(t.shape)

На выходе получается трехмерный массив формы (1,72,3). Для того, чтобы построить его, вам нужно сгладить ломтики.

Theta = (GenerateTrigonometryTable(5)[:,:,0])
STheta = (GenerateTrigonometryTable(5)[:,:,1])
ax1 = plt.subplot(111, projection='polar')
ax1.plot(Theta.flatten(), STheta.flatten())

plt.show()

enter image description here

Теперь, это может или не может быть тем, что вам нужно, поэтому позвольте мне предложить изменить функцию следующим образом

  • используйте радианты вместо градусов
  • складывает массивы как столбцы, чтобы вывести двумерный массив
  • включает 2 пи в массиве

Код:

import numpy as np
import matplotlib.pyplot as plt

def GenerateTrigonometryTable(x):
    A = np.deg2rad(np.arange(0,360+0.5,x))
    B = np.sin(A)  
    C = np.cos(A)
    return np.column_stack((A,B,C)) 

t = GenerateTrigonometryTable(5)
print(t.shape)

theta = (GenerateTrigonometryTable(5)[:,0])
stheta = (GenerateTrigonometryTable(5)[:,1])
ax1 = plt.subplot(111, projection='polar')
ax1.plot(theta, stheta)

plt.show()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...