【发布时间】:2019-12-16 13:30:01
【问题描述】:
我试图绘制这些数字的热图:
[[0.578, 0.261, 0.218, 0.177, 0.128, 0.125, 0.119],
[0.113, 0.111, 0.096, 0.095, 0.093, 0.088, 0.083],
[0.081, 0.078, 0.077, 0.072, 0.071, 0.07, 0.07],
[0.069, 0.068, 0.068, 0.067, 0.067, 0.06, 0.06],
[0.059, 0.058, 0.058, 0.058, 0.056, 0.056, 0.056],
[0.055, 0.055, 0.053, 0.051, 0.051, 0.051, 0.051],
[0.05, 0.049, 0.048, 0.048, 0.048, 0.047, 0.047]]
正如我们所见,第一个数字 (0.578) 和最后一个数字 (0.047) 之间存在巨大差异。因此,这是我得到的热图:
这是我使用的代码:
out_arr = np.asarray(x) ## x is the list of values that I mentioned above
a = out_arr
a = np.expand_dims(a, axis=0)
plt.imshow(x, cmap='plasma', aspect ='auto')
plt.show()
我的问题是如何在不丢失实际差异的同时在颜色上带来更大的对比度?例如,在第 2 行之后,几乎所有其他人看起来都相似。当我希望在这些热图上运行图像识别模型时,更大的对比度会有所帮助。
谢谢,
【问题讨论】:
-
您是否尝试过使用不同的颜色图?
-
是的。我尝试过除等离子体之外的“酷”和“热”,两者都给出了相似的结果。有没有其他颜色可以显示这些差异。
-
另外,使用像 seaborn 这样的不同库会有帮助吗?谢谢!
-
可能不会,因为右下角的值非常接近。您可以应用非线性变换,例如取平方或更高的幂,但显然这会扭曲您的数据。
标签: python matplotlib heatmap