如何将Dataframe表格与已有图表并排绘制为子图?
实现图表与DataFrame子图并排展示
你可以通过matplotlib的子图布局结合表格组件,解决单位模板图与metrics数据框并排展示的布局问题,以下是调整后的完整代码:
import matplotlib.pyplot as plt import pandas as pd unit_ids = sorting_rec.unit_ids # 创建1行2列的子图布局,加宽画布以容纳表格内容 fig, (ax_plot, ax_table) = plt.subplots(1, 2, figsize=(22, 8)) # 在第一个子图绘制单位模板 sw.plot_unit_templates(we, unit_ids=unit_ids, ax=ax_plot) ax_plot.set_title("单位模板图") # 处理metrics数据:原2行31列横向过宽,转置为31行2列更易阅读 metrics_transposed = metrics.T.reset_index() metrics_transposed.columns = ["指标", "单位1", "单位2"] # 在第二个子图嵌入数据表格 table = ax_table.table(cellText=metrics_transposed.values, colLabels=metrics_transposed.columns, loc='center') # 调整表格字体大小,保证内容清晰 table.auto_set_font_size(False) table.set_fontsize(9) # 隐藏表格子图的坐标轴,避免冗余元素干扰 ax_table.axis('off') ax_table.set_title("单位指标数据") # 设置全局标题并优化整体布局 plt.suptitle(name, fontsize=12, y=0.02) plt.tight_layout(rect=[0, 0.05, 1, 1]) plt.savefig(name+"_xx.png", bbox_inches='tight') plt.show()
关键调整说明:
- 用
plt.subplots(1, 2)创建左右并排的子图结构,通过加宽画布宽度适配表格的横向空间; - 转置metrics数据维度,解决原2行31列表格横向过宽、内容挤压的问题;
- 通过
ax.table()在子图中嵌入数据表格,隐藏无用坐标轴并调整字体大小,保证数据可读性; - 指定
ax参数将spikeinterface的绘图绑定到第一个子图,避免默认占用整个画布。
内容的提问来源于stack exchange,提问作者Kshtj
相关产品推荐
相关产品推荐

