赞
踩
最近因为开发一个项目,需要用到Matplotlib绘制一些图片和表格,网上找到的一些,感觉总差点意思,绘制个表格感觉有点过于麻烦,因此自己整理了下。
绘制方法直接使用Matplotlib绘制,没有使用别的依赖,我觉得还是比较简洁的,希望对你有所帮助,如果有用,还请给点个赞。
效果图如下所示,如果数据过长的话,可以考虑把横纵交换下,结果如左图所示,显示效果会好一些:
代码如下:
import matplotlib.pyplot as plt
import numpy as np
fig, 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()
表格的横纵表头是支持除字母外的一些简单符号的,比如↑↓←→等,一定程度上还是优化显示的。另一方面,数据部分也是支持字符串的,也支持一些简单的符号,展示效果如下所示:
本文到此结束,如果还有什么疑惑,可以在评论区留言,如果文章对你有帮助,还请辛苦点赞支持下。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。