Python Matplotlib 绘制表格
最近因为开发一个项目,需要用到Matplotlib绘制一些图片和表格,网上找到的一些,感觉总差点意思,绘制个表格感觉有点过于麻烦,因此自己整理了下。
绘制方法直接使用Matplotlib绘制,没有使用别的依赖,我觉得还是比较简洁的,希望对你有所帮助,如果有用,还请给点个赞。
效果图如下所示,如果数据过长的话,可以考虑把横纵交换下,结果如左图所示,显示效果会好一些:
代码如下:
import matplotlib.pyplot as plt
import numpy as npfig, ax = plt.subplots(1, 2)# 左侧边栏,如果不需要,在plt.table中注释即可
# rowLabels 与 rowColours中的数据长度要保持一致,同时和数据中的元素个数保持一致--len(data)
rowLabels = ['state', '↑', '↓', '←', '→', 'up', 'down', 'fire']
rowColours = ["#EBB25E", "#F0C9C0", "#F0C9C0", "#F0C9C0", "#F0C9C0", "#F0C9C0", "#F0C9C0", "#F2F2F2"]# 列表头颜色,需要和单条数据长度保持一致--len(data[0])
colColors = ["#377eb8"]
colColors.extend(["#00ccff"] * 20)# 左侧结果图数据
data = [[1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],[1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],[0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]]column_labels = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21"]# 取消坐标轴
ax[0].axis('off')
ax[0].table(cellText=data,colLabels=column_labels,colColours=colColors,rowColours=rowColours,rowLabels=rowLabels,cellLoc='center',rowLoc='center',loc="center")#数据转置,右侧图数据
transpose_data = np.array(data)
transpose_data = np.transpose(transpose_data).tolist()
# print(transpose_data)
# 取消坐标轴
ax[1].axis('off')
ax[1].table(cellText=transpose_data,colLabels=rowLabels,colColours=rowColours,rowColours=colColors,rowLabels=column_labels,cellLoc='center',rowLoc='center',loc="center")
# 将图标保存到硬盘
# plt.savefig('fix.jpg', dpi=300)
plt.show()
表格的横纵表头是支持除字母外的一些简单符号的,比如↑↓←→等,一定程度上还是优化显示的。另一方面,数据部分也是支持字符串的,也支持一些简单的符号,展示效果如下所示:
本文到此结束,如果还有什么疑惑,可以在评论区留言,如果文章对你有帮助,还请辛苦点赞支持下。