Seabornでmatplotlibの見た目を良くする


このページは以下のURLに移転しました。5秒後に自動で移動します。
新URL: https://note.nkmk.me/python-matplotlib-seaborn-basic/

Seabornはmatplotlibベースの統計データビジュアライゼーションライブラリ。

statisticalと銘打っているだけあって、統計的なデータをプロットするための機能がたくさん用意されているが、普通の折れ線グラフの見た目を良くするためだけにも使える。

スタイルを変える

import seaborn as snsを入れるだけでseabornスタイルに変わる。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# seaborn用の設定。後で説明。
# sns.set_style("whitegrid", {'grid.linestyle': '--'})
# sns.set_context("talk", 1.5, {"lines.linewidth": 4})
# sns.set_palette("winter", 8, 0.5)
# sns.set('talk', 'whitegrid', 'dark', font_scale=1.5,
# rc={"lines.linewidth": 2, 'grid.linestyle': '--'})
x = np.arange(0, 2.1, 0.1)
plt.plot(x, x)
plt.plot(x, x**1.5)
plt.plot(x, x**2)

左がmatplotlibデフォルトで右がseabornスタイル。

without seabornseaborn

sns.set_style()でスタイルを変更できる。

プリセットのstyleは5つ。

  • darkgrid:背景暗、グリッドあり。デフォルト。
  • dark:背景暗、グリッドなし。
  • whitegrid:背景白、グリッドあり。
  • white:背景白、グリッドなし。
  • ticks:背景白、軸にのみグリッドあり。
1
sns.set_style('whitegrid')

のように設定する。

左がwhitegrid、右がticks

seaborn whitegridseaborn ticks

引数rcで、さらに細かい設定もできる。

例えば、グリッドの線を点線にするには、

1
sns.set_style("whitegrid", {'grid.linestyle': '--'})

と設定する。

seaborn dot

そのほか設定できる項目は公式のチュートリアルか、matplotlibの設定サンプル参照。

大きさ(スケール)を変える

sns.set_context()で大きさを変更できる。

プリセットのcontextは4つ。下にいくほど大きくなる。

  • paper
  • notebook(デフォルト)
  • talk
  • poster
1
sns.set_context("paper")

のように設定する。

左がpaper、右がposter。このページの表示は縮小されているが、左のposterのほうが画像サイズが大きくなっている。クリックすると元画像が表示される。

seaborn paperseaborn poster

引数font_scalercで、さらに細かい設定もできる。

例えば、フォントを大きく、線を太くするには、

1
sns.set_context("talk", 2.5, {"lines.linewidth": 6})

と設定する。

seaborn talk bold

色を変える

sns.set_palette()で色を変更できる。

paletteには、

のいずれかを設定する。

名前付きのパレットはデフォルトで6色なので、それ以上使いたい場合は、引数n_colorsで色数を設定する。ただし、Seabornのカラーパレットは6色までしか用意されていない。

matplotlibのカラーパレットwinterを8色で使う場合、

1
sns.set_palette("winter", 8)

と設定する。

引数desatを使うと彩度を下げることが出来る。彩度を半分にする場合、

1
sns.set_palette("winter", 8, 0.5)

と設定する。

左がdesat=1(設定なし)、右がdesat=0.5。分かりやすいようにプロットの本数も増やしている。

seaborn winter 8 colorsseaborn winter 8colors desat

matplotlibのカラーパレットを使う場合、paletteの名前に_rを付けると色の順番が逆になる。

1
sns.set_palette("winter_r", 8)

左がwinter、右がwinter_r

seaborn winter 8 colorsseaborn winter 8colors reverse

まとめて変える

sns.set()でスタイルや色をまとめて変更できる。

一気に設定できる。

1
2
sns.set('talk', 'whitegrid', 'dark', font_scale=1.5,
rc={"lines.linewidth": 2, 'grid.linestyle': '--'})

seaborn all set

関連記事