我是最近轉換爲Python的Matlab用戶。大多數我自己管理的Python技能,但是通過密謀我已經碰壁並需要一些幫助。如何在使用subplot2grid時共享
這就是我想要做的......
我需要做的是由3個副區具有以下屬性的人物:
- 插曲佈局爲311,312,313
- 的312和313的高度爲大約一半的311
- 所有副區具有共同的X軸
- 的副區爲0(它們彼此接觸在X軸)之間的空間
順便說一句,我知道如何使所有這一切,只在一個數字。這是我現在面臨的問題。
例如,這是我的理想副區佈局:
import numpy as np
import matplotlib.pyplot as plt
t = np.arange(0.0, 2.0, 0.01)
s1 = np.sin(2*np.pi*t)
s2 = np.exp(-t)
s3 = s1*s2
fig = plt.figure()
ax1 = plt.subplot2grid((4,3), (0,0), colspan=3, rowspan=2)
ax2 = plt.subplot2grid((4,3), (2,0), colspan=3)
ax3 = plt.subplot2grid((4,3), (3,0), colspan=3)
ax1.plot(t,s1)
ax2.plot(t[:150],s2[:150])
ax3.plot(t[30:],s3[30:])
plt.tight_layout()
plt.show()
通知不同副區的x軸是如何對準。我不知道如何使x軸在此圖,但如果我做這樣的事情:
import numpy as np
import matplotlib.pyplot as plt
t = np.arange(0.0, 2.0, 0.01)
s1 = np.sin(2*np.pi*t)
s2 = np.exp(-t)
s3 = s1*s2
fig2, (ax1, ax2, ax3) = plt.subplots(nrows=3, ncols=1, sharex=True)
ax1.plot(t,s1)
ax2.plot(t[:150],s2[:150])
ax3.plot(t[30:],s3[30:])
plt.tight_layout()
plt.show()
現在x軸的次要情節之間對齊,但所有次要情節是相同的尺寸(這是不我想要的)
此外,我想的是,次要情節在x軸像這樣感人:
import numpy as np
import matplotlib.pyplot as plt
t = np.arange(0.0, 2.0, 0.01)
s1 = np.sin(2*np.pi*t)
s2 = np.exp(-t)
s3 = s1*s2
fig1 = plt.figure()
plt.subplots_adjust(hspace=0)
ax1 = plt.subplot(311)
ax2 = plt.subplot(312, sharex=ax1)
ax3 = plt.subplot(313, sharex=ax1)
ax1.plot(t,s1)
ax2.plot(t[:150],s2[:150])
ax3.plot(t[30:],s3[30:])
xticklabels = ax1.get_xticklabels()+ax2.get_xticklabels()
plt.setp(xticklabels, visible=False)
plt.show()
所以要改寫我的問題:
我想用
plt.subplot2grid(..., colspan=3, rowspan=2)
plt.subplots(..., sharex=True)
plt.subplots_adjust(hspace=0)
和
plt.tight_layout()
一起在同一圖中。怎麼做?
謝謝,這正是我所需要的。 避免重疊y-ticks的好方法。但是,我通過將中間的y軸修剪到右側來解決它。 'ax2.yaxis.tick_right()' –