【问题标题】:Seaborn: annotate missing values on the heatmapSeaborn:在热图上标注缺失值
【发布时间】:2021-03-18 01:30:46
【问题描述】:

我正在使用 seaborn 库在 python 中绘制热图。数据框包含一些缺失值 (NaN)。我希望与这些字段对应的热图单元格是白色的(默认情况下),并且还使用字符串 NA 进行注释。但是,如果我没看错,注释不适用于缺失值。是否有任何黑客攻击?

我的代码:

    sns.heatmap(
        df,
        ax=ax[0, 0],
        cbar=False,
        annot=annot_df,
        fmt="",
        annot_kws={"size": annot_size, "va": "center_baseline"},
        cmap="coolwarm",
        linewidth=0.5,
        linecolor="black",
        vmin=-max_value,
        vmax=max_value,
        xticklabels=True,
        yticklabels=True,
    )

【问题讨论】:

    标签: pandas matplotlib seaborn heatmap


    【解决方案1】:

    一个想法是绘制另一个热图,使用透明颜色并且仅使用原始数据框为NaN 的值。要控制轴标签,应最后绘制“真实”热图。请注意,NaN 单元格的颜色是绘图的背景颜色。

    import seaborn as sns
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    from matplotlib.colors import ListedColormap
    
    data = np.where(np.random.rand(7, 10) < 0.2, np.nan, np.random.rand(7, 10) * 2 - 1)
    df = pd.DataFrame(data)
    annot_df = df.applymap(lambda f: f'{f:.1f}')
    fig, ax = plt.subplots(squeeze=False)
    sns.heatmap(
        np.where(df.isna(), 0, np.nan),
        ax=ax[0, 0],
        cbar=False,
        annot=np.full_like(df, "NA", dtype=object),
        fmt="",
        annot_kws={"size": 10, "va": "center_baseline", "color": "black"},
        cmap=ListedColormap(['none']),
        linewidth=0)
    sns.heatmap(
        df,
        ax=ax[0, 0],
        cbar=False,
        annot=annot_df,
        fmt="",
        annot_kws={"size": 10, "va": "center_baseline"},
        cmap="coolwarm",
        linewidth=0.5,
        linecolor="black",
        vmin=-1,
        vmax=1,
        xticklabels=True,
        yticklabels=True)
    plt.show()
    

    PS:要显式地为'NA' 单元格着色,例如可以使用cmap=ListedColormap(['yellow'])

    【讨论】:

    • 另外,或者另外,您可以添加阴影:ax[0, 0].pcolor(np.where(df.isna(), 0, np.nan), hatch='xx', alpha=0)
    猜你喜欢
    • 2020-03-18
    • 2018-07-02
    • 1970-01-01
    • 1970-01-01
    • 2018-02-07
    • 2019-06-27
    • 2016-01-14
    • 2023-04-03
    相关资源
    最近更新 更多