2012-08-22 112 views
5

我正在繪製一個極座標圖上的方位角 - 仰角曲線,其中仰角是徑向分量。默認情況下,Matplotlib將徑向值從中心的0繪製到周長的90。我想扭轉,所以90度是在中心。我嘗試通過調用ax.set_ylim(90,0)來設置限制,但這會導致引發LinAlgError異常。 ax是通過調用add_axes獲得的軸對象。在Matplotlib極座標圖上設置徑向軸

可以這樣做,如果是的話,我該做什麼?

編輯:這是我現在使用的。基本的繪圖代碼的Matplotlib例子

# radar green, solid grid lines 
rc('grid', color='#316931', linewidth=1, linestyle='-') 
rc('xtick', labelsize=10) 
rc('ytick', labelsize=10) 

# force square figure and square axes looks better for polar, IMO 
width, height = matplotlib.rcParams['figure.figsize'] 
size = min(width, height) 
# make a square figure 
fig = figure(figsize=(size, size)) 
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8], projection='polar', axisbg='#d5de9c') 

# Adjust radius so it goes 90 at the center to 0 at the perimeter (doesn't work) 
#ax.set_ylim(90, 0) 

# Rotate plot so 0 degrees is due north, 180 is due south 

ax.set_theta_zero_location("N") 

obs.date = datetime.datetime.utcnow() 
az,el = azel_calc(obs, ephem.Sun()) 
ax.plot(az, el, color='#ee8d18', lw=3) 
obs.date = datetime.datetime.utcnow() 
az,el = azel_calc(obs, ephem.Moon()) 
ax.plot(az, el, color='#bf7033', lw=3) 

ax.set_rmax(90.) 
grid(True) 

ax.set_title("Solar Az-El Plot", fontsize=10) 
show() 

,從這個結果曲線圖上拍攝是

enter image description here

+0

你有什麼代碼?這可能對回答你的問題有很大幫助(特別是第二部分)。 – Evert

+0

我想這可以通過映射函數來反轉徑向座標並手動設置徑向標籤。這是否足夠,或者你真的想重新定義徑向軸? –

回答

3

我設法把他徑向軸反轉。我不得不重新映射半徑,以匹配新的軸:

fig = figure() 
ax = fig.add_subplot(1, 1, 1, polar=True) 

def mapr(r): 
    """Remap the radial axis.""" 
    return 90 - r 

r = np.arange(0, 90, 0.01) 
theta = 2 * np.pi * r/90 

ax.plot(theta, mapr(r)) 
ax.set_yticks(range(0, 90, 10))     # Define the yticks 
ax.set_yticklabels(map(str, range(90, 0, -10))) # Change the labels 

注意,這只是一個黑客,軸仍然與周邊中央的0和90。您將不得不爲所繪製的所有變量使用映射函數。