seabornによるプロット

R では ggplot2 というライブラリが人気ですが、Python では seaborn(シーボーン)というデータ視覚化ライブラリが人気です。pip install seaborn または conda install seaborn などとしてインストールしておきましょう。seaborn は matplotlib の上で動いているので、いずれにしても matplotlib の設定は必要です。seaborn については Kaggle で Data Visualization という初心者向けの無料講座があるようです。

seaborn 用に用意されているサンプルデータの一覧を見てみましょう:

import seaborn as sns

sns.get_dataset_names()
['anagrams',
 'anscombe',
 'attention',
 'brain_networks',
 'car_crashes',
 'diamonds',
 'dots',
 'dowjones',
 'exercise',
 'flights',
 'fmri',
 'geyser',
 'glue',
 'healthexp',
 'iris',
 'mpg',
 'penguins',
 'planets',
 'seaice',
 'taxis',
 'tips',
 'titanic']

現時点で22通りのデータがあります。これらは seaborn-data レポジトリからオンデマンドで取ってきて ~/seaborn-data にキャッシュされます。試しに iris データセットを取ってきてみましょう。

iris = sns.load_dataset("iris")

Seaborn の命令一覧は API reference にあります。ペアプロットを描いてみましょう。

sns.pairplot(iris)
Iris

スタイルの設定は次のようにします:

sns.set_style("darkgrid")

スタイルは whitedarkwhitegriddarkgridticks から選びます。

2022年の Seaborn 0.12 からは、まったく新しい seaborn.objects インターフェースが使えるようになりました。これは Wilkinson の Grammar of Graphics という思想に基づいて作られたものです。同じ思想に基づいて作られたものでは R の ggplot2 が有名で、Python でも ggplot2 を模した plotnine が2017年に作られました(Sinaplot のところにも書きました)が、seaborn.objects も同じ流れを汲むものです。

import seaborn as sns
import seaborn.objects as so

penguins = sns.load_dataset("penguins")
so.Plot(penguins, x="bill_length_mm", y="bill_depth_mm").add(so.Dot()).show()

この最後の1行は、読みやすいように、次のように書くことが一般的です。

(
    so.Plot(penguins, x="bill_length_mm", y="bill_depth_mm")
    .add(so.Dot())
    .show()
)

保存は上の .show().save("foo.svg", bbox_inches="tight") に置き換えてもできますし、従来通りに Matplotlib を使って plt.savefig("foo.svg", bbox_inches="tight") としてもできます。

Penguins