Matplotlib固定图形大小和子图位置

时间:2017-07-07 20:25:29

标签: python matplotlib

我在matplotlib中遇到有关子图大小的问题。我需要在一行中创建一个由3个子图组成的固定大小的图形。出于编辑原因'我需要修复图形的大小但我还想修改子图的大小和位置而不影响图形大小(第三个子图必须比前两个更窄)。

我尝试使用GridSpec但没有成功。我也尝试用" figsize"来修复图形尺寸。并使用add_axes作为子图,但是,根据子图的相对大小,图的整体大小和子图会发生变化。

使用gnuplot时,可以使用" set origin"和"设置大小"对于子图。我们在matplotlib中有类似的东西吗?

1 个答案:

答案 0 :(得分:0)

这样的东西?更改宽度比将更改各个子图的大小。

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

plt.show()

如果您想要更多地控制尺寸,您也可以使用Axes。它仍然是相对的,但现在是整个数字大小的一小部分。

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()