seabornにおけるhue
seabornでは、barplotやpointplotなど、多くの描画関数で「hue」という引数を取れる。
これは色相を表す英語。つまり色分けに使う。ベトナム阮朝の首都ではない。
-
- ページ末尾の2例の変化がわかりやすい
-
- 4番目のグラフ
例えば以下のような時に便利。
X軸・Y軸で2次元のグラフを描いた。ここにもう1次元を追加して情報量を増やしつつ、見やすさは維持したい。追加する次元がカテゴリカル(数値のような連続した値ではなく、性別のような分類的なデータ)で、せいぜい4~5分類程度なら、カテゴリ毎に色分けすることで、それを達成できる。
これを使いこなせると、1枚のグラフで示せることがぐっと広がるので、かっこいい。
pandasを一緒に使う際には、引数のdata
にpandas.DataFrame
を渡し、x, y, hue
にそれぞれのカラム名を指定するのが楽。
凡例の表記を変更
色分けしても、どの色が何を示すのかの凡例がないと、せっかくの見やすさも意味が伝わらず終わってしまう。
通常、自動的に、DataFrameに入っているカテゴリを示す値がそのまま使われる。
これを変更したいが、元のDataFrameは変えずに凡例だけ変えたい。
まぁ、ぶっちゃけ1カラムを凡例用に追加して、描画した後は消せばいい話ではあるんだけど。
一応以下の方法がある。
# グラフを描画したaxを取得 ax = sns.boxplot(x="day", y="total_bill", hue="sex", data=tips) # 凡例のhandleを取得 handles, _ = ax.get_legend_handles_labels() # ax.legend()の引数に、handleと、変更したい項目名を与える # 与える順番の調べ方はわからんが、一度描いてみて表示された順でいいかな ax.legend(handles, ["Man", "Woman"])