我需要添加兩個子圖到一個圖。一個小區需要大約三倍於第二個(相同的高度)。我使用GridSpec
和colspan
這個參數完成了這個操作,但是我想用figure
這樣做,所以我可以保存爲PDF。我可以在構造函數中使用figsize
參數調整第一個圖形,但是如何更改第二個圖形的大小?Matplotlib不同大小的子圖
回答
您可以使用gridspec
和figure
:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import gridspec
# generate some data
x = np.arange(0, 10, 0.2)
y = np.sin(x)
# plot it
fig = plt.figure(figsize=(8, 6))
gs = gridspec.GridSpec(1, 2, width_ratios=[3, 1])
ax0 = plt.subplot(gs[0])
ax0.plot(x, y)
ax1 = plt.subplot(gs[1])
ax1.plot(y, x)
plt.tight_layout()
plt.savefig('grid_figure.pdf')
我以前pyplot
的axes
對象來手動調整大小,而不使用GridSpec
:
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 10, 0.2)
y = np.sin(x)
# definitions for the axes
left, width = 0.07, 0.65
bottom, height = 0.1, .8
bottom_h = left_h = left+width+0.02
rect_cones = [left, bottom, width, height]
rect_box = [left_h, bottom, 0.17, height]
fig = plt.figure()
cones = plt.axes(rect_cones)
box = plt.axes(rect_box)
cones.plot(x, y)
box.plot(y, x)
plt.show()
也許最簡單的方法正在使用subplot2grid
,描述爲i n Customizing Location of Subplot Using GridSpec。
ax = plt.subplot2grid((2, 2), (0, 0))
等於
import matplotlib.gridspec as gridspec
gs = gridspec.GridSpec(2, 2)
ax = plt.subplot(gs[0, 0])
所以BMU的示例變爲:
import numpy as np
import matplotlib.pyplot as plt
# generate some data
x = np.arange(0, 10, 0.2)
y = np.sin(x)
# plot it
fig = plt.figure(figsize=(8, 6))
ax0 = plt.subplot2grid((1, 3), (0, 0), colspan=2)
ax0.plot(x, y)
ax1 = plt.subplot2grid((1, 3), (0, 2))
ax1.plot(y, x)
plt.tight_layout()
plt.savefig('grid_figure.pdf')
的另一種方法是使用subplots
函數並傳遞寬度比與gridspec_kw
:
import numpy as np
import matplotlib.pyplot as plt
# generate some data
x = np.arange(0, 10, 0.2)
y = np.sin(x)
# plot it
f, (a0, a1) = plt.subplots(1,2, gridspec_kw = {'width_ratios':[3, 1]})
a0.plot(x,y)
a1.plot(y,x)
f.tight_layout()
f.savefig('grid_figure.pdf')
其實我最喜歡這個選項,我很高興我滾動到底部:) – astrojuanlu
感謝您的支持! 'plt.subplots'做事情的方式更加簡潔。 –
我喜歡subpots比gridspec更好,因爲您不必再處理設置軸上的列表(gridspec,您仍然需要使軸和圖一個接一個)。所以小區更清潔,使用速度更快 –
- 1. Matplotlib子圖大小不等於
- 2. matplotlib中子圖的相對大小
- 3. 在matplotlib中設置子圖的大小
- 4. 更改matplotlib子圖的大小
- 5. Matplotlib:可變大小的子圖?
- 6. matplotlib中的精確子圖大小
- 7. Python - matplotlib中不同大小的subplots
- 8. Matlab - 子圖中的不同軸大小
- 9. 排列圖像大小matplotlib
- 10. Matplotlib將酒吧的寬度設置爲所有子圖的相同大小
- 11. Matplotlib散點圖大小圖例
- 12. 減少Matplotlib底圖的大小
- 13. Matplotlib中的Bin大小(直方圖)
- 14. 獲取調整大小的matplotlib圖窗口的大小
- 15. 使用matplotlib imshow獲取相同的副圖大小和分散
- 16. 如何在matlab中對齊不同大小的子圖圖像
- 17. 不同繪圖的圖像大小
- 18. 創建不同大小的盒子
- 19. matplotlib中的平滑輪廓圖從3個不同大小的列表
- 20. 對matplotlib中的不同子圖使用相同的色條
- 21. 在matplotlib中改進了子圖大小/間距與許多小圖
- 22. Matplotlib固定數字大小和子圖位置
- 23. 如何增加Matplotlib底圖大小?
- 24. 嵌入matplotlib圖並改變其大小
- 25. matplotlib更改sublot的大小
- 26. WordPress的不同的圖像大小
- 27. 如何使相同大小的圖片在,但圖像大小不同勢
- 28. 固定大小的容器中的不同圖像大小
- 29. 具有不同圖像大小或高度的離子滑塊
- 30. 具有不同大小離子圖像的卡片
Gridspec的作品與一個正常的數字。 – tillsten