import matplotlib.pyplot as plt
from matplotlib import gridspec
fig = plt.figure(figsize=(7, 5)) # 7 inches wide, 5 inches tall
row = int(fig.get_figheight() * 10)
col = int(fig.get_figwidth() * 10)
gsfig = gridspec.GridSpec(
row, col,
left=0, right=1, bottom=0,
top=1, wspace=0, hspace=0)
gs1 = gsfig[:, 0:30]
# these spans are in tenths of an inch, so left-right
# spans from col 0 to column 30 (or 3 inches)
ax1 = fig.add_subplot(gs1)
gs1 = gsfig[20:40, 35:70] # again these spans are in tenths of an inch
ax1 = fig.add_subplot(gs1)
2条答案
按热度按时间zu0ti5jz1#
你需要想象一些(虚拟的)网格来放置子情节。
网格有3行和2列。第一个子图覆盖所有三行和第一列。第二个子图仅覆盖第二列的第二行。行大小和列大小之间的比率不一定相等。
此外,您还可以为
hspace
和wspace
参数设置不同的值。GridSpec tutorial给出了一个很好的概述。
因为评论里提到了:如果可能需要以英寸为单位的绝对定位,我建议直接添加所需大小的轴,
pdtvr36n2#
--编辑:这个答案与@ImportanceOfBeingErnest给出的答案惊人地相似,但它采用了一种以英寸为单位而不是以分数为单位的布局控制方法。
如果您使用
gridspec
将其网格化,然后使用所需的比率或列的跨度填充网格,这会有所帮助。对于我制作的许多图形,我需要它们很好地适合页面,所以我经常使用这种模式来给予网格控制,精确到十分之一英寸。