gpt4 book ai didi

python - 为多索引数据框更改热图的 yticks

转载 作者:行者123 更新时间:2023-12-05 06:02:32 24 4
gpt4 key购买 nike

下面是从 MultiIndex 数据框生成的 seaborn 热图:

import numpy as np
import pandas as pd
import seaborn as sns

years = range(2016,2019)
months = range(1,6)
df = pd.DataFrame(index=pd.MultiIndex.from_product([years,months]))
df['vals'] = np.random.random(size=len(df))
sns.heatmap(df)

上面的热图的 yticks 显示了年份和月份。有没有办法将热图的 yticks 更改为仅显示年份,如下所示?

最佳答案

使用 sns.heatmapyticklabels 参数设置自定义标签

  1. 创建除所需索引处以外的空字符串列表

    两者之一仅在月份为 3 时显示标签

    labels = [year if month == 3 else '' for year, month in df.index]

    或者:只显示特定行的标签(OP 示例中的索引 2、7 和 12)

    labels = [year if row in (2, 7, 12) else ''
    for row, (year, month) in enumerate(df.index)]
  2. 然后通过yticklabels

    设置这些标签
    sns.heatmap(df, yticklabels=labels)

注意事项:

  • month == 3row in (2, 7, 12) 等条件特定于 OP 的示例,需要根据实际情况进行调整数据。
  • 如果您有一个datetime 索引(不仅仅是字符串),请参阅this answer for spacing out datetime yticks .

关于python - 为多索引数据框更改热图的 yticks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66897981/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com