You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GridSpec中对齐表格与地图的标题及垂直布局

解决Matplotlib布局的标题对齐与间距问题

针对你遇到的两个布局问题,直接修改代码里的GridSpec配置和标题参数就能解决:

1. 缩小上下图表的垂直间距

创建gridspec.GridSpec时,添加hspace参数控制子图间的垂直间距,数值越小间距越紧凑。

2. 让地图与表格的标题对齐

表格所在的轴因隐藏了坐标轴,默认标题位置会偏上,需要手动设置标题的y坐标,和地图轴的标题位置保持一致;同时给两个标题设置统一的水平对齐方式,确保对齐效果。

修改后的完整代码

import geopandas as gpd
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
from blume.table import table

fig = plt.figure(figsize=(11, 8.5))
fig.suptitle(f"Water intensity of {ti}")
# 添加hspace缩小上下间距,wspace调整左右间距(按需调整)
gs = gridspec.GridSpec(2, 2, height_ratios=[1, 2], hspace=0.2, wspace=0.1)

# 顶部两个图表
ax = fig.add_subplot(gs[0, 0])
ax.set_title("Fig 1", loc='center')
ax = fig.add_subplot(gs[0, 1])
ax.set_title("Fig 2", loc='center')

# 地图子图
ax_map = fig.add_subplot(gs[1, 0])
# 设置标题位置,记录y值用于表格对齐
ax_map.set_title("Map 1", loc='center', y=1.02)
world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
world.plot(ax=ax_map)

# 表格子图
ax_table = fig.add_subplot(gs[1, 1])
ax_table.set_axis_off()
tab = table(ax_table,
    cellText=["10","20"],
    colLabels=[1,2],
    rowLabels=['a','b'],
    loc='center'
).scale(1,1.5)
# 用和地图相同的y值设置标题,保证垂直对齐
ax_table.set_title("Table 1", loc='center', y=1.02)

plt.show()

关键修改说明

  • gridspec.GridSpec中hspace=0.2:控制上下子图的垂直间距,可根据需求调整数值(比如0.1更紧凑,0.3更宽松)
  • 地图和表格标题设置相同的y=1.02:让标题处于同一垂直高度,loc='center'保证水平居中对齐
  • 可选wspace参数:调整左右子图的水平间距,优化整体布局协调性

内容的提问来源于stack exchange,提问作者Ilya Voytov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 18:40:45