web-dev-qa-db-ja.com

パーセンテージとしてのSeabornヒートマップカラーバーラベル

このヒートマップを考えると:

import numpy as np; np.random.seed(0)
import seaborn as sns; sns.set()
uniform_data = np.random.Rand(10, 12)
ax = sns.heatmap(uniform_data)

カラーバーの値をパーセント形式で表示するにはどうすればよいですか?また、カラーバーに最初と最後の値を表示したい場合はどうすればよいですか?

前もって感謝します!

9
Dance Party2

自分でカラーバーを作成せずに、@ mwaskomのソリューションを繰り返します。

import numpy as np
import seaborn as sns
data = np.random.Rand(8, 12)
ax = sns.heatmap(data, vmin=0, vmax=1)
cbar = ax.collections[0].colorbar
cbar.set_ticks([0, .2, .75, 1])
cbar.set_ticklabels(['low', '20%', '75%', '100%'])

custom seaborn heatmap color bar labels

22
Stefaan

さて、私は同様の問題を抱えていて、 フォーマッタを適切に設定する の方法を考え出しました。あなたの例は次のようになります:

import numpy as np; np.random.seed(0)
import seaborn as sns; sns.set()

uniform_data = np.random.Rand(10, 12)
uniform_data = 100 * uniform_data

sns.heatmap(uniform_data,
            cbar_kws={'format': '%.0f%%'})

したがって、古いスタイルの文字列フォーマッタを渡して、カラーバーラベルにパーセンテージを追加する必要があります。私が自明と名付けるものとは正確には異なりますが、機能します...

最初と最後だけを表示するには、vmaxvminおよび追加のパラメーターをcbar_kwsに追加します。

sns.heatmap(uniform_data,
            cbar_kws={'format': '%.0f%%', 'ticks': [0, 100]},
            vmax=100,
            vmin=0)
6
Alexandre

カラーバーオブジェクトにアクセスできる必要があります。どこかのフィギュアオブジェクトに埋もれているかもしれませんが、見つからなかったので、自分で作るだけで簡単にできます。

import numpy as np; np.random.seed(0)
import seaborn as sns; sns.set()
uniform_data = np.random.Rand(10, 12)
ax = sns.heatmap(uniform_data, cbar=False, vmin=0, vmax=1)
cbar = ax.figure.colorbar(ax.collections[0])
cbar.set_ticks([0, 1])
cbar.set_ticklabels(["0%", "100%"])

enter image description here

5
mwaskom