簡體   English   中英

遮蓋seaborn熱圖中的注釋

[英]Masking annotations in seaborn heatmap

我想制作一個僅在特定單元格中具有注釋的熱圖。 盡管執行此操作的一種方法是在所有單元格中制作帶有注釋的熱圖,然后覆蓋另一個沒有注釋但在希望原始注釋可見的區域中被屏蔽的熱圖:

import numpy as np
import seaborn as sns

par_corr_p = np.array([[1, 2], [3, 4]])
masked_array = np.ma.array(par_corr_p, mask=par_corr_p<2)

fig, ax = plt.subplots()
sns.heatmap(par_corr_p, ax=ax, cmap ='RdBu_r', annot = par_corr_p, center=0, vmin=-5, vmax=5)
sns.heatmap(par_corr_p, mask = masked_array.mask, ax=ax,  cmap ='RdBu_r', center=0, vmin=-5, vmax=5)

但是,這不起作用-第二個熱圖沒有覆蓋第一個熱圖:

在此處輸入圖片說明

請指教

我嘗試了一些方法,包括在annot數組中使用numpy.nan或“”。 不幸的是,它們不起作用。

這可能是最簡單的方法。 它涉及到抓取軸的texts ,這些texts只能是sns.heatmap放在其中的annot中的標簽。

import numpy as np
from matplotlib import pyplot as plt
import seaborn as sns

par_corr_p = np.array([[1, 2], [3, 4]])

data = par_corr_p
show_annot_array = data >= 2

fig, ax = plt.subplots()
sns.heatmap(
    ax=ax,
    data=data,
    annot=data,
    cmap ='RdBu_r', center=0, vmin=-5, vmax=5
)
for text, show_annot in zip(ax.texts, (element for row in show_annot_array for element in row)):
    text.set_visible(show_annot)

plt.show()

在此處輸入圖片說明

暫無
暫無

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

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