簡體   English   中英

為備用標簽更改 Seaborn 熱圖 Y-ticklabels 字體顏色

[英]Change Seaborn heatmap Y-ticklabels font color for alternate labels

我有一個 seaborn 熱圖,在 Y 軸上有 100 多個標簽。 我想以交替方式將 Y 標簽的字體顏色更改為紅色和藍色。 如果我有 10 個 Y 標簽,那么 5 個標簽應該有藍色字體,5 個標簽應該有紅色字體。

請幫助

您可以使用ax.ticklabel.font()來實現這一點。 您甚至可以使用字體輕松區分鄰居。 這里給出了一個示例代碼。

import numpy as np; np.random.seed(0)
import seaborn as sns; sns.set_theme()
uniform_data = np.random.rand(10, 12)
ax = sns.heatmap(uniform_data)
for i, tick_label in enumerate(ax.axes.get_yticklabels()):
    if i%2:
        tick_label.set_color("blue")
        tick_label.set_fontsize("15")
    else:
        tick_label.set_color("red")
        tick_label.set_fontsize("10")

Output 在此處輸入圖像描述

雖然按照@Redox 的建議進行枚舉是必要的,但您需要一個靈活的解決方案,以防您的 label 是一個字符串,這在熱圖中很常見。 有關更多信息,請參閱[matplotlib documentation][1] 感謝@gasvom 的回答[here][1]的啟發。

所以我會這樣執行:


    import numpy as np; 
    import seaborn as sns; 
    uniform_data = np.random.rand(10, 12)
    ax = sns.heatmap(uniform_data)
    for i, tick_label in enumerate(ax.axes.get_yticklabels()):
        if tick_label.get_text()=="a string of your choice":
            tick_label.set_color("blue")
            tick_label.set_fontsize("15")
        else:
            tick_label.set_color("red")
            tick_label.set_fontsize("10")

暫無
暫無

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

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