2017-05-17 25 views
0

私はmatplotlibを初めて使用しています。私はmatplotlibチュートリアルのウェブサイトでかなりの時間を費やしてきましたが、数字をゼロから構築する方法はまだ分かりません。私にとっては、これは手動ですべてを行うことです... plt.plot()関数を使用せず、常にFigure、軸ハンドルを設定します。matplotlibでx軸のラベルが消えて、Pythonでの基本的なプロット

誰でも図を上からセットアップする方法を説明できますか?

今、私はこのコードを使用して、2倍のy軸プロットを生成します。

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()を呼び出した時点でティックラベルが定義されていません。

ダッシュとティックラベルを手動で設定する場合は、独自のデータを使用してリストまたはアレイを指定して(これを自動ラベル付けを使用する理由はわかりませんが)

ticks = np.arange(min(yearsTotal),max(yearsTotal)+1) 
ax1.set_xticks(ticks) 
ax1.set_xticklabels(ticks) 

ticklabelsがここtickpositionsと同様であるので、あなたもちょうど

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

完全な例を行うことがあります。

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() 

enter image description here

0

があなたのコードに基づいて、なぜ知っている、それは消えていない私のxlabelsが消えていると私は」いけない。しかし、それは、この2つの関数で(上書き)設定されている:軸上

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ラベルが表示されません。(あなたがそこにある2行をコメントアウトしない限り)自動ラベル付けを使用します。自動ラベリングとそれを手動で行う方法を理解する – pwprnt

関連する問題