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
相关产品推荐
相关产品推荐

