12
我試圖創建一個由2x2網格組成的圖形,其中每個象限中有2個垂直堆疊的子圖(即2x1網格)。不過,我似乎無法弄清楚如何實現這一目標。Matplotlib - 將子圖添加到子圖中?
最近我得到的是使用gridspec和一些醜陋的代碼(見下文),但因爲gridspec.update(hspace=X)
更改所有subplots的間距我仍然不是我想要的位置。
理想情況下,我想要的是,使用下面的圖片作爲示例,減少每個象限內的子圖之間的間距,同時增加頂部和底部象限之間的垂直間距(即1-3和2-4之間)。
有沒有辦法做到這一點(使用或不使用gridspec)?我最初設想的是生成每個子子網格(即每個2x1網格)並將它們插入到更大的2x2網格子圖中,但我還沒有想出如何將子圖添加到子圖中,如果偶數一種方式。
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
plt.figure(figsize=(10, 8))
gs = gridspec.GridSpec(4,2)
gs.update(hspace=0.4)
for i in range(2):
for j in range(4):
ax = plt.subplot(gs[j,i])
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
plt.tick_params(which='both', top='off', right='off')
if j % 2 == 0:
ax.set_title(str(i+j+1))
ax.plot([1,2,3], [1,2,3])
ax.spines['bottom'].set_visible(False)
ax.get_xaxis().set_visible(False)
else:
ax.plot([1,2,3], [3,2,1])
完美,謝謝:) – user3014097