簡體   English   中英

如何更改 seaborn 熱圖中某些方塊的顏色?

[英]How to change color of certain squares in a seaborn heatmap?

我正在嘗試在seaborn(python)中創建一個熱圖,其中某些正方形用不同的顏色着色,(這些正方形包含無關緊要的數據-在我的情況下,它將是值小於1.3的正方形,即p值的-log >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()

我想補充一點,我不是很高級的程序員。

好的,所以我現在可以自己回答我的問題了 :) 這是解決問題的代碼:

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'])

fig, ax = plt.subplots(figsize=(8, 8))
sns.heatmap(data, ax=ax)
sns.heatmap(data, mask=data > 1.3, cmap=cmap1, cbar=False, ax=ax)
plt.show()

在此處輸入圖像描述

因此,以前不起作用的屏蔽問題是它僅適用於數組而不適用於列表。 另一件事就是用掩蔽繪制熱圖兩次 - 第二次。 我唯一不明白的是它掩蓋了所寫內容的相反字段。我想掩蓋低於1.3的值,但隨后它着色高於1.3的值。所以我寫了掩碼=數據> 1.3,現在它可以工作了...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM