【发布时间】:2020-03-17 19:10:52
【问题描述】:
我正在使用 matplotlib 创建一个 5 行 4 列的表。我想使用颜色显示每个单独列中所有条目的值差异。理想情况下,我想使用针对每列个性化的颜色图比例,这意味着该列的颜色图的比例将具有该列值的范围。
澄清一下 - 在第二列中,值介于 800-1200 之间,但第一列值介于 120-230 之间。当在整个表的范围内应用相同的颜色图时,与颜色图范围为 120-230 而不是 120-1200 时相比,第一列中值之间的差异定义得更少。
这似乎不适用于 matplotlib,因为颜色图适用于整个表格。我想要的也可能只是一个糟糕且令人困惑的演示文稿,所以如果有更好的方式来展示我想要的东西,请告诉我!
这就是我现在拥有的:
fig, ax = plt.subplots()
rows = ['%d nodes' % x for x in (10, 30, 50, 75, 100)]
columns=['TP', 'TN', 'FP', 'FN']
conf_data = np.array(
[[ 230, 847, 784, 208],
[ 156, 1240, 391, 282],
[ 146, 1212, 419, 292],
[ 130, 1148, 483, 308],
[ 122, 1173, 458, 316]]
)
normal = plt.Normalize(np.min(conf_data), np.max(conf_data))
fig.patch.set_visible(False)
ax.axis('off')
ax.axis('tight')
ax.table(cellText=conf_data,
rowLabels=rows,
colLabels=columns,
cellColours=cm.GnBu(normal(conf_data)),
loc='center',
colWidths=[0.1 for x in columns])
fig.tight_layout()
plt.show()
【问题讨论】:
标签: python matplotlib datatable