2014-11-13 15 views
12

Ho il seguente codice di esempio:Ruota theta = 0 su matplotlib diagramma polare

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

data_theta = range(10,171,10) 

data_theta_rad = [] 
for i in data_theta: 
    data_theta_rad.append(float(i)*np.pi/180.0) 

data_r = random.sample(range(70, 90), 17) 

print data_theta 
print data_r 

ax = plt.subplot(111, polar=True) 
ax.plot(data_theta_rad, data_r, color='r', linewidth=3) 
ax.set_rmax(95) 
# ax.set_rmin(70.0) 
ax.grid(True) 

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

... che produce qualcosa di simile: enter image description here

... ma vorrei impostare theta = 0 a "Ovest". Quindi, qualcosa di simile a:

enter image description here

Tutte le idee come fare questo con matplotlib (ho fatto la foto sotto in PowerPoint)?

+2

Una piccola nota a margine: 'numpy' fornisce utili funzioni per le conversioni angolari:' data_theta_rad = np.radians (data_theta) ' – hitzg

risposta

13

utilizzare semplicemente:

ax.set_theta_zero_location("W") 

Maggiori informazioni nel documentation di matplotlib.

+0

ottengo: AttributeError: L'oggetto 'PolarAxesSubplot' non ha attributo 'set_theta_zero_location' ... forse il mio modulo non è aggiornato ??? – HotDogCannon

+0

Che versione di matplotlib stai usando? Potrebbe essere necessario aggiornare, sto usando 1.3.1 e funziona bene. – hitzg

+0

sono un po 'imbarazzato a dirlo, ma non so come scoprirlo – HotDogCannon

6

Un modo più flessibile:

ax.set_theta_offset(pi)

È possibile ruotare l'asse in modo arbitrario, basta sostituire pi con l'angolo che si desidera.

Problemi correlati