読者です 読者をやめる 読者になる 読者になる

計算物理屋の研究備忘録

Linux, Cygwin, Mac, zsh, emacs等の使い方、設定などのメモ

Seabornのスタイル見本

Python

次回:Seabornのコンテキスト見本 - 計算物理屋の研究備忘録
次次回:Seabornの色見本 - 計算物理屋の研究備忘録

Seabornとは

matplotlibのグラフのスタイルや配色を見やすくきれいに設定してくれる便利なやつ。基本的にはmatplotlibを使うときにちょっと付け足すだけで使えるのでmatplotlib使いなら簡単。

公式サイト

Seaborn: statistical data visualization — seaborn 0.7.1 documentation

現在の最新バージョンは0.7.0

インストールはcondaが使えればcondaコマンドからできる。pipでもできると思う。

スタイル一覧

darkgrid whitegrid
f:id:keisanbutsuriya:20160601014037p:plain f:id:keisanbutsuriya:20160601014043p:plain
dark white
f:id:keisanbutsuriya:20160601014040p:plain f:id:keisanbutsuriya:20160601014046p:plain
ticks ticks despine
f:id:keisanbutsuriya:20160601014049p:plain f:id:keisanbutsuriya:20160601014222p:plain

使い方

公式サイトのチュートリアルから。

https://web.stanford.edu/~mwaskom/software/seaborn/tutorial/aesthetics.html#aesthetics-tutorial

%matplotlib inline
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
np.random.seed(sum(map(ord, "aesthetics")))

def sinplot(flip=1):
    x = np.linspace(0, 14, 100)
    for i in range(1, 7):
        plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)

# デフォルトのmatplotlib
sinplot()

これはmatplotlibのデフォルトのグラフ。確かに多少色がチカチカする。 f:id:keisanbutsuriya:20160601014031p:plain

Seabornを使うには、デフォルトの設定でよければ一行書くだけ

# Seabornのデフォルト (darkgrid)
import seaborn as sns
sinplot()

Seabornが適用されて、見やすくなる f:id:keisanbutsuriya:20160601014037p:plain

5つの基本的なスタイルが用意されていて、1行書くだけでスタイルを変えることができる。

sns.set_style("darkgrid")     # デフォルト
#sns.set_style("whitegrid")
#sns.set_style("dark")
#sns.set_style("white")
#sns.set_style("ticks")
sinplot()

グラフの上と右の枠線を消すこともSeabornなら可能。matplotlibでは無理らしい?

sns.set_style("ticks")
sinplot()
sns.despine()

これらのグラフはすでに上に載せてある。

どのような値が設定してあるかも確認できる。

sns.set()    # 設定をクリアしてデフォルトに。
sns.axes_style()

上記コマンドの出力がこちら。pythonの辞書形式になっている。

{'axes.axisbelow': True,
 'axes.edgecolor': 'white',
 'axes.facecolor': '#EAEAF2',
 'axes.grid': True,
 'axes.labelcolor': '.15',
 'axes.linewidth': 0.0,
 'figure.facecolor': 'white',
 'font.family': ['sans-serif'],
 'font.sans-serif': ['Arial',
  'Liberation Sans',
  'Bitstream Vera Sans',
  'sans-serif'],
 'grid.color': 'white',
 'grid.linestyle': '-',
 'image.cmap': 'Greys',
 'legend.frameon': False,
 'legend.numpoints': 1,
 'legend.scatterpoints': 1,
 'lines.solid_capstyle': 'round',
 'text.color': '.15',
 'xtick.color': '.15',
 'xtick.direction': 'out',
 'xtick.major.size': 0.0,
 'xtick.minor.size': 0.0,
 'ytick.color': '.15',
 'ytick.direction': 'out',
 'ytick.major.size': 0.0,
 'ytick.minor.size': 0.0}

スタイルをもう少しSeabornで調節したい場合は、上で出てくる辞書形式でsns.set_style()にいれてやる。

sns.set_style("darkgrid", {"axes.facecolor": "red"})
sinplot()

f:id:keisanbutsuriya:20160601014250p:plain