1. ホーム
  2. python

Seabornヒートマップの目盛りラベルの回転を変更する

2023-11-06 04:26:56

質問

Seabornでヒートマップをプロットしています。問題は、プロット中にあまりにも多くの正方形があるため、xとyのラベルが近すぎて役に立たないことです。そこで、xticksとyticksのリストを作って使っています。しかし、このリストを関数に渡すと、プロットのラベルが回転してしまいます。seabornが自動的にいくつかの目盛りを削除するのは本当に素晴らしいことですが、それを除けば、私はyticksを直立させることができるようにしたいと思います。

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

data = pd.DataFrame(np.random.normal(size=40*40).reshape(40,40))

yticks = data.index
keptticks = yticks[::int(len(yticks)/10)]
yticks = ['' for y in yticks]
yticks[::int(len(yticks)/10)] = keptticks

xticks = data.columns
keptticks = xticks[::int(len(xticks)/10)]
xticks = ['' for y in xticks]
xticks[::int(len(xticks)/10)] = keptticks

sns.heatmap(data,linewidth=0,yticklabels=yticks,xticklabels=xticks)

<イグ

どのように解決するのですか?

seaborn 使用方法 matplotlib を内部で使用しているので matplotlib 関数を使用してプロットを変更することができます。私は、以下のコードを修正して plt.yticks を設定するために rotation=0 という関数があり、これが問題を解決してくれます。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns


data = pd.DataFrame(np.random.normal(size=40*40).reshape(40,40))

yticks = data.index
keptticks = yticks[::int(len(yticks)/10)]
yticks = ['' for y in yticks]
yticks[::int(len(yticks)/10)] = keptticks

xticks = data.columns
keptticks = xticks[::int(len(xticks)/10)]
xticks = ['' for y in xticks]
xticks[::int(len(xticks)/10)] = keptticks

sns.heatmap(data,linewidth=0,yticklabels=yticks,xticklabels=xticks)

# This sets the yticks "upright" with 0, as opposed to sideways with 90.
plt.yticks(rotation=0) 

plt.show()

<イグ