1
3つの異なるプロットを3つのサブプロットで1つの図にプロットしようとしています。また、最初の図形を他の2つの図形の2倍の幅にしたい。したがって私は使用しましたPythonのサブプロットが正しく機能しない
gs = gridspec.GridSpec(2, 2, width_ratios=[2,1], height_ratios=[1,1])
しかし、出力はax3にプロットされたすべての数字を持っています。
私のコードは
import matplotlib
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
import matplotlib.gridspec as gridspec
gs = gridspec.GridSpec(2, 2, width_ratios=[2,1], height_ratios=[1,1])
ax1=plt.subplot(gs[:,:-1])
ax2=plt.subplot(gs[:-1,-1])
ax3=plt.subplot(gs[-1,-1])
# ax 1
X=np.linspace(0,10,100)
Y=np.sin(X)
ax1 = plt.gca()
ax1.scatter(X, Y)
ax1.axis("tight")
ax1.set_title('ax1')
ax1.set_xlim([0,10])
ax1.set_ylim([-1,1])
plt.xticks([])
plt.yticks([])
# ax 2
ax2 = plt.gca()
vel=np.random.rand(1000)
n, bins, patches = plt.hist(vel, 10, normed=True, histtype='stepfilled', facecolor='green', alpha=1.0)
ax2.set_title('Velocity Distribution')
ax2.axis("tight")
plt.xticks([0,0.05,0.10])
plt.yticks([0,10,20])
# ax 3
Z=np.exp(X)
ax3.plot(X,Z,'red',lw=5)
plt.show()
誰かが、私はこれを修正する方法を教えてもらえますここに与えられています。前もって感謝します。
感謝。できます。最初のチェックで、 'ax2 = plt.gca()'という行を削除したことに気付きました。彼らがなぜ必要でないのか聞いてもよろしいですか?または、彼らは彼らが使用されている他の場所で何をしていますか? – kanayamalakar
@kanayamalakarこれらの3つの軸の最後のaxに対して 'ax3 = plt.subplot(gs [-1、-1]) 'を割り当てました。しかしその直後に 'ax1 = plt.gca()'がありました。 'gca()'はget_current_axesを意味します。したがって、 'ax3 = ax1'のように動作します。それがax3にプロットされたすべての軸の理由です。 – su79eu7k
@kanayamalakar ax3のダニの答えが少し改善されました。 1つのサブプロットにアクセスするには 'sca()'を使います。 – su79eu7k