2017-05-17 8 views
0

matplotlib를 처음 사용하는데 매우 혼란 스럽습니다. matplotlib 튜토리얼 웹 사이트에서 꽤 많은 시간을 보냈지만, 처음부터 그림을 만드는 방법을 이해할 수는 없습니다. 나에게 이것은 모든 것을 수동으로하는 것을 의미한다 ... plt.plot() 함수를 사용하지 않고 항상 figure, 축 핸들을 설정한다.matplotlib에서 x 축 레이블이 사라지고 파이썬에서 기본 플로팅

아무도 그림을 처음부터 위로 설치하는 방법을 설명 할 수 있습니까?

바로 지금,이 코드는 이중 y 축 플롯을 생성합니다. 하지만 내 xlabels이 사라지고 난 당신의 코드를 기반으로

fig, ax1 = plt.subplots() 
ax1.plot(yearsTotal,timeseries_data1,'r-') 
ax1.set_ylabel('Windspeed [m/s]') 
ax1.tick_params('y',colors='r') 

ax2 = ax1.twinx() 
ax2.plot(yearsTotal,timeseries_data2,'b-') 
ax2.set_xticks(np.arange(min(yearsTotal),max(yearsTotal)+1)) 
ax2.set_xticklabels(ax1.xaxis.get_majorticklabels(), rotation=90) 
ax2.set_ylabel('Open water duration [days]') 
ax2.tick_params('y',colors='b') 

plt.title('My title') 
fig.tight_layout() 
plt.savefig('plots/my_figure.png',bbox_inches='tight') 
plt.show() 

답변

1

twinx을 사용 중이므로 원래 축 (ax1)에서만 작동하는 것이 좋습니다. 또한 ax1.xaxis.get_majorticklabels()이라고하는 지점에서 틱 레이블이 정의되어 있지 않습니다.

수동으로 눈금과 눈금 레이블을 설정하려는 경우 자신의 데이터를 사용하여 목록이나 배열을 지정하여 (자동 레이블링을 사용하는 이유를 알 수는 없지만)

import matplotlib.pyplot as plt 
import numpy as np; np.random.seed(1) 

yearsTotal = np.arange(1977, 1999) 
timeseries_data1 = np.cumsum(np.random.normal(size=len(yearsTotal)))+5 
timeseries_data2 = np.cumsum(np.random.normal(size=len(yearsTotal)))+20 

fig, ax1 = plt.subplots() 
ax1.plot(yearsTotal,timeseries_data1,'r-') 
ax1.set_ylabel('Windspeed [m/s]') 
ax1.tick_params('y',colors='r') 
ax1.set_xticks(np.arange(min(yearsTotal),max(yearsTotal)+1)) 
plt.setp(ax1.get_xticklabels(), rotation=70) 

ax2 = ax1.twinx() 
ax2.plot(yearsTotal,timeseries_data2,'b-') 
ax2.set_ylabel('Open water duration [days]') 
ax2.tick_params('y',colors='b') 

plt.title('My title') 
fig.tight_layout() 
plt.show() 
,536 다음 ticklabels 이후
ticks = np.arange(min(yearsTotal),max(yearsTotal)+1) 
ax1.set_xticks(ticks) 
ax1.set_xticklabels(ticks) 

여기 tickpositions, 당신은 또한 단지

ax1.set_xticks(np.arange(min(yearsTotal),max(yearsTotal)+1)) 
plt.setp(ax1.get_xticklabels(), rotation=70) 

전체 예제를 수행 할 수 있습니다과 동일

enter image description here

0

,이 두 가지 기능을함으로써, 설정 (덮어 쓰기)되어 사라지지 않는 이유를 알고 '해달라고 : 축에

ax2.set_xticks(np.arange(min(yearsTotal),max(yearsTotal)+1)) 
ax2.set_xticklabels(ax1.xaxis.get_majorticklabels(), rotation=90) 

set_xticks() 위치를 설정하고 set_xticklabels()은 xtick 레이블을 문자열 레이블 목록으로 설정합니다.

+0

난 당신, 내 음모에있는 XTICK 라벨 (나는 당신이 거기에있는 두 줄을 주석 제외) 및 자동 라벨을 사용 .. 난을 피하기 위해 노력하고 볼 수없는 무슨 뜻인지 모르겠어요 자동 라벨링 및 수동으로 수행하는 방법 파악 – pwprnt

관련 문제