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

Matplotlib:如何以Pythonic方式在图表旁展示DataFrame数据

在Matplotlib图表旁展示DataFrame的Python风格实现方法

嘿,这个需求超实用!在Matplotlib里,我们可以直接用内置的表格组件把DataFrame嵌入到图表画布中,完美实现数据和折线图同框展示,完全符合Python的简洁风格。

直接给你修改后的完整代码,关键部分我会标注出来:

import matplotlib.pyplot as plt
import pandas as pd

# 创建目标DataFrame
df = pd.DataFrame({'Age':[21,22,23,24,25,26,27,28,29,30],'Count':[4,1,3,7,2,3,5,1,1,5]})

# 加宽画布,给表格预留空间
plt.rcParams['figure.figsize']=(12,6)
fig, ax = plt.subplots()

# 绘制原有的折线图
font_used={'fontname':'pristina', 'color':'Black'}
ax.set_ylabel('Count',fontsize=20,**font_used)
ax.set_xlabel('Age',fontsize=20,**font_used)
ax.plot(df['Age'], df['Count'], linewidth=2)

# ---------- 核心:添加DataFrame表格到画布右侧 ----------
# 整理表格数据:先放表头,再拼接DataFrame的行数据
table_data = [df.columns.values] + df.values.tolist()
# 创建表格,用bbox参数精准控制位置和大小(画布坐标系为0-1,[左, 下, 宽, 高])
table = ax.table(cellText=table_data,
                 loc='right',
                 bbox=[0.85, 0.1, 0.12, 0.8],
                 cellLoc='center')  # 单元格内容居中对齐

# 优化表格可读性
table.set_fontsize(12)
# 给表头添加浅灰色背景,和数据行做区分
for col_idx in range(len(df.columns)):
    table[(0, col_idx)].set_facecolor('#f0f0f0')

# 调整子图右侧间距,避免表格被画布边缘截断
plt.subplots_adjust(right=0.8)
plt.show()

关键细节说明:

  • 画布调整:把figsize从(10,6)改成(12,6),给右侧表格留出足够空间
  • 表格定位:bbox参数是核心,你可以根据需求调整四个数值,灵活控制表格的位置和大小
  • 样式优化:给表头设置背景色、调整字体大小,让数据展示更清晰
  • 间距适配:用subplots_adjust调整右侧留白,防止表格被画布边缘遮挡

如果想要更灵活的布局,也可以把画布拆分成左右两个子图(左侧画图、右侧放表格),但上面的方法更直接,不需要额外拆分画布结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 04:32:42