【问题标题】:How to create a heatmap with a huge value range?如何创建具有巨大价值范围的热图?
【发布时间】:2020-05-20 13:20:24
【问题描述】:

我想可视化一个值从 -28000 到 728 的 2D 矩阵。我使用 seaborn heatmap 来获得可视化。

import seaborn as sns
%matplotlib inline
plt.figure(figsize = (20,20))
sns.heatmap(temp,annot=True,linewidths=.05,linecolor='blue')

但是,我没有得到适当的可视化,因为范围非常大。在这种情况下我该怎么办? 附上可视化的快照。

【问题讨论】:

  • 对此有解决方案,但这取决于您要显示的内容。例如,您可以使用np.clip 将数据裁剪到更小的范围内,或者使用vmin=-40 vmax=10 进行绘制;或者你可以说,使用log10 的值的abs,所以 10000=>4, 100=>2, 1=>1,它显示的较小值的范围比较大的值更多。

标签: python numpy matplotlib data-visualization seaborn


【解决方案1】:
import seaborn as sns
%matplotlib inline
plt.figure(figsize = (20,20))
sns.heatmap(temp,annot=True,linewidths=.05,linecolor='blue',vmax=728,vmin=-28000)

使用 vmax、vmin 设置范围

【讨论】:

  • 是的,我也用过这种方法但是没有效果。两者都给出了相同的结果。
  • 你能把热图和问题一起发布吗?
  • 根据您的数据,大多数值都在 (-10,10) 范围内。您应该考虑将热图的范围设置为 [vmax=10,vmin=-10] 或您选择的任何其他值。这会将任何大于 10 的值设置为比例的最大值,将任何小于 -10 的值设置为最小值。
【解决方案2】:

sklearns MinMaxScaler 应用于您的数据,然后取np.sqrtnp.log 的结果(您必须四处寻找最有效的方法。

【讨论】:

    猜你喜欢
    • 2012-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-12
    • 2020-07-17
    相关资源
    最近更新 更多