Как отформатировать yticks или xticks как процентную тепловую карту seaborn

#python #pandas #seaborn #data-visualization

#python #панды #seaborn #визуализация данных

Вопрос:

Я пытаюсь отформатировать yticks здесь в процентах. Итак, покажите 10%, 20%, 30%

    ax = sns.heatmap(pd.DataFrame({'A':[1,2,3],'B':[4,5,6]},index=[0.1,0.2,0.3]))
 

введите описание изображения здесь

Я пробовал это, но он выдает неправильные галочки

 ax = sns.heatmap(pd.DataFrame({'A':[1,2,3],'B':[4,5,6]},index=[0.1,0.2,0.3]))
ax.yaxis.set_major_formatter(PercentFormatter())
 

введите описание изображения здесь

Ответ №1:

PercentFormatter не работает, потому что он изменяет метки тиков в соответствии со значениями тиков. Тем не менее, тики в этом случае таковы [0.5, 1.5, 2.5] , что вы видите 50%... .

Вы можете вручную переформатировать метки тиков:

 df = pd.DataFrame({'A':[1,2,3],'B':[4,5,6]},index=[0.1,0.2,0.3])
ax = sns.heatmap(df)
ticks = ax.set_yticklabels([f'{x:.0%}' for x in df.index],
                           va='center')   # to center the label vertically
 

Вывод:

введите описание изображения здесь

Комментарии:

1. Может быть, также центрировать метки по вертикали? ax.set_yticklabels(..., va='center')

2. Спасибо, пожалуйста, добавьте это в свой первоначальный ответ, чтобы помочь другим @Quang Hoang