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

Matplotlib Pyplot table使用scale加高单元格后如何垂直居中文本

Matplotlib 表格单元格文本垂直居中解决方法

scale()方法实现纵向拉伸时,仅对单元格的图形区域做坐标缩放,不会同步调整内部文本的垂直定位基准,因此会出现文本偏上、上下留白不均的问题,可通过以下两种方法解决:

方法一:手动设置单元格高度(推荐,效果最稳定)

不使用scale()做形变缩放,直接在布局层面设置单元格高度,表格原生的居中属性会自动让文本在固定尺寸的单元格内垂直居中,不会出现位置偏移。
完整实现代码:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()

colLabels = ['col 0', 'col 1', 'col 2']
rowLabels = ['row 0', 'row 1', 'row 2']

tableData = [['123', '123', '123'],
             ['123', '123', '123'],
             ['123', '123', '123']]

ax.set_axis_off()
ax.title.set_text('Table Title')

myTable = ax.table(cellText=tableData, rowLabels=rowLabels, colLabels=colLabels,
                   cellLoc='center', rowLoc='center', loc='center')
myTable.auto_set_font_size(False)
myTable.set_fontsize(12)

# 手动设置单元格高度,数值越大上下留白越多,0.2的高度和原代码scale(1,2)的视觉留白大小基本一致
set_height = 0.2
for _, cell in myTable.get_celld().items():
    cell.set_height(set_height)

plt.show()

print('\n' + 'done !!' + '\n')

方法二:保留scale调用,手动修正文本位置

如果需要保留scale()的使用逻辑,可以在缩放完成后遍历所有单元格,将文本的垂直坐标重新设置为单元格的中点,抵消拉伸带来的位置偏移。
需要在原代码myTable.scale(1, 2)后添加如下代码:

# 遍历所有单元格修正文本垂直位置
for cell in myTable.get_celld().values():
    # 获取单元格当前的上下边界
    y_bottom = cell.get_y()
    y_top = y_bottom + cell.get_height()
    # 将文本y坐标设置为单元格垂直中点
    cell.get_text().set_y((y_bottom + y_top) / 2)

注意:该方法在后续调整画布大小、修改缩放比例后,需要重新执行位置修正逻辑,稳定性弱于方法一。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 06:21:28