2012-08-22 4 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() 

이 결과로 플롯 중 하나에서 수행되었다 I는 그 반전 축을 방사상 넣어 관리

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으로 아직도있다. 플로팅 할 모든 변수에 매핑 기능을 사용해야합니다.

관련 문제