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

Matplotlib绘图与表格布局占比调整及保存截断问题求助

Matplotlib绘图与表格并排的问题解决

问题1:调整绘图与表格的空间占比(绘图2/3,表格1/3)

不需要使用subplot2grid,采用坐标轴宽度比例划分的方式更直接。通过gridspec_kw参数设置两个坐标轴的宽度比为2:1,分别用来绘制折线图和放置表格,即可实现绘图占2/3、表格占1/3的布局。

修正后的核心代码:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 创建数据集
df = pd.DataFrame({
    'Month':['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sept','Oct','Nov','Dec'],
    '2024':[1945,1290,1662,1500,1355,1469,1209,1429,1662,1350,1525,1625],
    '2025':[1695,1767,1475,1518,1556,1441,1467,1557,1421,1460,950,715]
})

# 创建1行2列的坐标轴,宽度比例2:1
fig, (ax_plot, ax_table) = plt.subplots(1, 2, figsize=(12,6), gridspec_kw={'width_ratios': [2, 1]})

# 绘制折线图
ax_plot.plot(df['Month'], df['2024'], 'g', label='2024')
ax_plot.plot(df['Month'], df['2025'], 'r', label='2025')
ax_plot.set_title('Revenues')
ax_plot.legend()
ax_plot.tick_params(axis='x', rotation=45)  # 旋转x轴标签避免重叠

# 放置表格并隐藏多余坐标轴元素
ax_table.axis('off')
the_table = ax_table.table(cellText=df.to_numpy(), colLabels=df.columns, loc='center')
the_table.auto_set_font_size(False)
the_table.set_fontsize(10)
the_table.scale(1, 1.2)  # 调整表格行高,优化显示效果

问题2:完整保存图像,避免截断

图像截断的原因是表格超出了默认的画布边界,有两种简单解决方式:

方式1:保存时添加bbox_inches='tight'参数

该参数会让Matplotlib自动扩展画布,容纳所有元素:

plt.savefig('table_test.png', bbox_inches='tight', dpi=100)

方式2:创建画布时开启自动布局

通过constrained_layout=True让布局系统自动适配元素位置,无需额外调整保存参数:

# 创建画布时开启自动布局
fig, (ax_plot, ax_table) = plt.subplots(1, 2, figsize=(12,6), gridspec_kw={'width_ratios': [2, 1]}, constrained_layout=True)

# 绘图、添加表格...

plt.savefig('table_test.png', dpi=100)

注意:原代码中plt.savefig(path,'table_test.png')参数顺序错误,正确格式应为plt.savefig('文件路径/table_test.png', 其他参数)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.01 21:24:51