2017-11-28 11 views
0

何が問題なのですか?上のグラフのラベルは下のグラフの下にあります...私は本当にこれを修正する方法を想像することはできません。私はそれが標準的に動作すると思った。下のグラフが上のグラフのラベルと重なっています

コードは、http://www.physics.nyu.edu/pine/pymanual/html/chap5/chap5_plot.html#basic-plottingです。

グラフがどのようにしなければならないかのイメージは、リンクhttp://www.physics.nyu.edu/pine/pymanual/html/_images/subplotDemo.pngにあります。

上のサイトからコードをコピーして得たグラフの画像は、My overlapped graphのリンクにあります。

import numpy as np 
import matplotlib.pyplot as plt 

theta = np.arange(0.01, 8., 0.04) 
y = np.sqrt((8./theta)**2-1.) 
ytan = np.tan(theta) 
ytan = np.ma.masked_where(np.abs(ytan)>20., ytan) 
ycot = 1./np.tan(theta) 
ycot = np.ma.masked_where(np.abs(ycot)>20., ycot) 

plt.figure(1) 

plt.subplot(2, 1, 1) 
plt.plot(theta, y) 
plt.plot(theta, ytan) 
plt.ylim(-8, 8) 
plt.axhline(color="gray", zorder=-1) 
plt.axvline(x=np.pi/2., color="gray", linestyle='--', zorder=-1) 
plt.axvline(x=3.*np.pi/2., color="gray", linestyle='--', zorder=-1) 
plt.axvline(x=5.*np.pi/2., color="gray", linestyle='--', zorder=-1) 
plt.xlabel("theta") 
plt.ylabel("tan(theta)") 

plt.subplot(2, 1, 2) 
plt.plot(theta, -y) 
plt.plot(theta, ycot) 
plt.ylim(-8, 8) 
plt.axhline(color="gray", zorder=-1) 
plt.axvline(x=np.pi, color="gray", linestyle='--', zorder=-1) 
plt.axvline(x=2.*np.pi, color="gray", linestyle='--', zorder=-1) 
plt.xlabel("theta") 
plt.ylabel("cot(theta)") 

plt.show() 

答えて

0

非常に簡単な解決策があります:グラフを表示する前に、plt.tight_layout()行を挿入してください。この線は、サブプロット間のマージンを自動的に調整し、すべてが素晴らしいように見えます。あなたのコードで

それは次のようになります。tight_layoutについて

plt.tight_layout() 
plt.show() 

詳しい情報はここで見つけることができます:Tight Layout Guide

+0

それは完璧に動作します!ありがとう! –

+0

他の解決策をご存知ですか? –

+0

ええ、 'subplots_adjust'を使ってスペースをより具体的にカスタマイズすることができます。ここにいくつかの情報があります:[sublots_adjust](https://stackoverflow.com/a/6541454/7846567) – Max

関連する問題