2017-07-07 138 views
0

我打擾你在matplotlib有關subplot大小的問題。我需要在一行中創建一個由3個子圖組成的固定大小的圖。爲了「編輯原因」,我需要修正圖形的大小。但是我也想修正子圖的大小和位置,而不影響圖的大小(第三個子圖必須比前兩個窄)。Matplotlib固定數字大小和子圖位置

我試過使用GridSpec沒有成功。我也嘗試使用「figsize」固定圖形尺寸,並使用add_axes作爲子圖,但根據子圖的相對大小,圖的整體大小和子圖改變。

當使用gnuplot時,可以使用「set origin」和「set size」作爲子圖。我們在matplotlib中有類似的東西嗎?

+1

[在matplotlib插曲集大小]的可能的複製(https://stackoverflow.com/questions/41530975/set-size-of-subplot-in-matplotlib) – Dadep

+0

您可以發佈您的代碼? – Dadep

+0

通過添加任何軸或更改其大小,圖形大小不會更改。沒有簡單的選擇將軸定位在絕對座標中,但當然這可以根據圖大小和相對座標來計算。無論如何,如果您需要幫助,您需要顯示問題的[mcve]。 – ImportanceOfBeingErnest

回答

0

這樣的事情?更改寬度比率將改變各個子圖的尺寸。

fig, [ax1, ax2, ax3] = plt.subplots(1,3, gridspec_kw = {'width_ratios':[3, 2, 1]}, figsize=(10,10)) 

plt.show() 

如果你想擁有超過您也可以使用軸大小一些更多的控制。它仍然是相對的,但現在只是整個數字的一​​小部分。

import matplotlib.pyplot as plt 

# use plt.Axes(figure, [left, bottom, width, height]) 
# where each value in the frame is between 0 and 1 

# left 
figure = plt.figure(figsize=(10,3)) 
ax1 = plt.Axes(figure, [.1, .1, .25, .80]) 
figure.add_axes(ax1) 
ax1.plot([1, 2, 3], [1, 2, 3]) 

# middle 
ax2 = plt.Axes(figure, [.4, .1, .25, .80]) 
figure.add_axes(ax2) 
ax2.plot([1, 2, 3], [1, 2, 3]) 

# right 
ax3= plt.Axes(figure, [.7, .1, .25, .80]) 
figure.add_axes(ax3) 
ax3.plot([1, 2, 3], [1, 2, 3]) 

plt.show() 
+0

這似乎是工作,非常感謝! – DanielPerez

+0

樂意提供幫助,但只是接受答案,或upvote如果是有幫助的 –

+1

即使如此,它不完全是我所期待的,因爲subplots的大小和位置是相對的。 我發現奇怪的是不可能任意定義子圖的大小和位置 – DanielPerez