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

如何将DataFrame保存为无坐标轴图片?bbox_inches无效问题

解决Matplotlib保存DataFrame表格图片时下方多余空白的问题

问题描述

用Matplotlib将Pandas DataFrame生成的表格保存为图片时,已隐藏坐标轴,但表格下方仍存在多余空白,使用bbox_inches='tight'和pad_inches=0参数无法消除该空白。

解决方法

方法1:调整子图布局,让子图占满画布

默认subplot(111)会预留边距空间,即使隐藏坐标轴也无法填满画布。改用add_axes创建完全覆盖画布的子图,从根源消除多余边距:

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.table import table

df = {
        'Trace'           :['Mediaan'],
        'Max afstand(mm)' :[1],
        'Aantal staven'   :[2],
        'Gem HOH(mm)'     :[3],
        'Min C(mm)'       :[4],
        'Max C(mm)'       :[5],
        'Gem C(mm)'       :[6]
 }
Data = pd.DataFrame(df)

fig1 = plt.figure(figsize=(8, 8), dpi=220)
# 创建占满整个画布的子图,参数为[左, 下, 宽, 高],范围0-1
ax1 = fig1.add_axes([0, 0, 1, 1])
ax1.yaxis.set_visible(False)
ax1.xaxis.set_visible(False)
ax1.set_frame_on(False)  # 隐藏子图边框

# 绘制表格,设置居中布局
tbl = table(ax1, Data, loc='center')
# 可自定义表格字体大小
tbl.auto_set_font_size(False)
tbl.set_fontsize(12)

# 保存图片
fig1.savefig('Mediaan/'+csvfiles[i]+'_TraceMediaantabel.jpg', bbox_inches='tight', pad_inches=0)
plt.close(fig1)

方法2:根据表格实际尺寸调整画布大小

获取表格的边界框,将画布大小设置为刚好包裹表格,彻底消除空白:

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.table import table

df = {
        'Trace'           :['Mediaan'],
        'Max afstand(mm)' :[1],
        'Aantal staven'   :[2],
        'Gem HOH(mm)'     :[3],
        'Min C(mm)'       :[4],
        'Max C(mm)'       :[5],
        'Gem C(mm)'       :[6]
 }
Data = pd.DataFrame(df)

fig1 = plt.figure(figsize=(8, 8), dpi=220)
ax1 = plt.subplot(111, frame_on=False)
ax1.yaxis.set_visible(False)
ax1.xaxis.set_visible(False)

# 绘制表格
tbl = table(ax1, Data, loc='best')
# 刷新画布以获取准确的表格边界
fig1.canvas.draw()

# 获取表格的边界框并转换为图形坐标
bbox = tbl.get_window_extent().transformed(fig1.dpi_scale_trans.inverted())
# 将画布大小设置为表格的实际尺寸
fig1.set_size_inches(bbox.width, bbox.height)

# 保存图片
fig1.savefig('Mediaan/'+csvfiles[i]+'_TraceMediaantabel.jpg', bbox_inches='tight', pad_inches=0)
plt.close(fig1)

方法3:直接使用Pandas Style保存图片(推荐)

跳过Matplotlib子图布局的麻烦,用Pandas内置的style.to_image()直接生成图片,代码更简洁:

import pandas as pd

df = {
        'Trace'           :['Mediaan'],
        'Max afstand(mm)' :[1],
        'Aantal staven'   :[2],
        'Gem HOH(mm)'     :[3],
        'Min C(mm)'       :[4],
        'Max C(mm)'       :[5],
        'Gem C(mm)'       :[6]
 }
Data = pd.DataFrame(df)

# 设置表格样式(可选,比如添加边框)
style = Data.style.set_table_styles([
    {'selector': 'table', 'props': [('border-collapse', 'collapse')]},
    {'selector': 'th, td', 'props': [('border', '1px solid black'), ('padding', '8px')]}
])

# 保存为图片
style.to_image('Mediaan/'+csvfiles[i]+'_TraceMediaantabel.jpg', dpi=220)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 22:00:58