如何改变seaborn热图中某些方块的颜色?

时间:2015-10-14 12:28:07

标签: python visualization heatmap seaborn

我试图在seaborn(python)中使用不同颜色的某些方块创建热图(这些方块包含无关紧要的数据 - 在我的情况下,它将是值小于1.3的正方形,这是 - 对数值的对数> 0.05)。我找不到这样的功能。掩盖这些方块也没有用。 这是我的代码:

import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl
import seaborn as sns; sns.set()
data = [[1.3531363408, 3.339479161, 0.0760855365], [5.1167382617, 3.2890920405, 2.4764601828], [0.0025058257, 2.3165128345, 1.6532714962], [0.2600549869, 5.8427407219, 6.6627226609], [3.0828581725, 16.3825494439, 12.6722666929], [2.3386307357, 13.7275065772, 12.5760972276], [1.224683813, 2.2213656372, 0.6300876451], [0.4163788387, 1.8128374089, 0.0013106046], [0.0277592882, 2.9286203949, 0.810978992], [0.0086613622, 0.6181261247, 1.8287878837], [1.0174519889, 0.2621290291, 0.1922637697], [3.4687429571, 4.0061981716, 0.5507951444], [7.4201304939, 3.881457516, 0.1294141768], [2.5227546319, 6.0526491816, 0.3814362442], [8.147538027, 14.0975727815, 7.9755706939]]
cmap2 = mpl.colors.ListedColormap(sns.cubehelix_palette(n_colors=20, start=0, rot=0.4, gamma=1, hue=0.8, light=0.85, dark=0.15, reverse=False))
ax = sns.heatmap(data, cmap=cmap2, vmin=0)
plt.show()

我想补充一点,我不是非常高级的程序员。

1 个答案:

答案 0 :(得分:3)

好的,所以我现在可以自己回答我的问题:)以下是解决问题的代码:

import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl
import seaborn as sns; sns.set()
data = np.array([[1.3531363408, 3.339479161, 0.0760855365], [5.1167382617, 3.2890920405, 2.4764601828], [0.0025058257, 2.3165128345, 1.6532714962], [0.2600549869, 5.8427407219, 6.6627226609], [3.0828581725, 16.3825494439, 12.6722666929], [2.3386307357, 13.7275065772, 12.5760972276], [1.224683813, 2.2213656372, 0.6300876451], [0.4163788387, 1.8128374089, 0.0013106046], [0.0277592882, 2.9286203949, 0.810978992], [0.0086613622, 0.6181261247, 1.8287878837], [1.0174519889, 0.2621290291, 0.1922637697], [3.4687429571, 4.0061981716, 0.5507951444], [7.4201304939, 3.881457516, 0.1294141768], [2.5227546319, 6.0526491816, 0.3814362442], [8.147538027, 14.0975727815, 7.9755706939]])
cmap1 = mpl.colors.ListedColormap(['c'])
sns.heatmap(data)
sns.heatmap(data, mask=data > 1.3, cmap=cmap1, cbar=False)
plt.show()

因此,之前没有工作的屏蔽问题是它只适用于不在列表上的数组。 另外一件事就是用电阻图绘制热图两次 - 第二次。 我唯一不理解的是,它掩盖了与写入内容相反的字段。我想掩盖低于1.3的值,但是它的颜色值高于1.3 ..所以我写了mask = data> 1.3和现在它有效......