2013-03-18 4 views
3

주어진 높이 및 너비로 (지리적) 축 집합을 정의하면 플롯이 이러한 축을 채우도록하려면 어떻게해야합니까?지도의 강제 가로 세로 비율

import matplotlib.pyplot as plt 
import cartopy.crs as ccrs 

ax = plt.axes([0.3, 0.1, 0.4, 0.8], projection=ccrs.PlateCarree()) 
ax.coastlines() 
ax.set_global() 
plt.show() 

이지도에 대한 합리적인 비율로 플롯을 생산,하지만 난 그게 폭보다 키가 음모의 결과로, 대신 축을 채우기 위해 원했다. 이것은 단지 예일 뿐이므로이 작업을 수행하는 실제 시나리오가 중요합니다.

편집

그냥 내가 실제로 내 예제에서 나는 진정으로이 넓은보다 키가 크다 글로벌 범위와지도를 할 수 있도록 결과가 왜곡 될 싶어 calrify합니다. ax.set_aspect('auto')을 사용하면 PlateCarreeNorthPolarStereographic 예측에서 작동하지만 모든 경우에 작동하지는 않습니다 (예 : OSGB).

답변

4

좋은 질문입니다. 나는 꽤 오랫동안 내 레이더에 이것을 가지고 있었다. (https://github.com/SciTools/cartopy/issues/9).

최근에 matplotlib의 ax.set_adjustable 메소드 (here in fact)에 대해 알게되었습니다. 이것을 사용하면 고정 된 (데이터) 종횡비를 가진 축을 데이터 제한을 변경하여 가능한 공간을 채우도록 지시 할 수 있습니다. 예를 들어

:

import matplotlib.pyplot as plt 


ax = plt.axes([0.25, 0.05, 0.5, 0.9]) 
ax.set_aspect(1) 

ax.plot(range(10)) 
ax.set_adjustable('datalim') 

plt.show() 

은 (는 x의 동일한 길이 규모 및 Y 사이즈)와 비 사각형 플롯을 생산.

이 너무지도를 cartopy에 적용 할 수 있다는 것을 나에게 보인다

import matplotlib.pyplot as plt 
import cartopy.crs as ccrs 


ax = plt.axes([0.25, 0.05, 0.5, 0.9], projection=ccrs.PlateCarree()) 
ax.coastlines() 
ax.set_adjustable('datalim') 

ax.set_ylim([-90, 90]) 

plt.show() 

내가이 여기에 필요에 맞는 궁금해?

+0

아니요. 필자는 예상대로이 작업을 수행하기 위해'ax.set_aspect ('auto')'를 수행해야했습니다. – ajdawson

+0

알려 주셔서 감사합니다. 대답으로 추가하고 받아들이시겠습니까 (또는 원하는 경우 내 대답을 수락하십시오). 건배 – pelson

관련 문제