Seaborn Bar Plot – チュートリアルと例題

Seaborn は Matplotlib の拡張として、Python で最も広く使われているデータ可視化ライブラリの 1 つです。データ可視化のためのシンプルで直感的、かつ高度にカスタマイズ可能なAPIを提供しています。

このチュートリアルでは、Seabornで棒グラフを描く方法について見ていきます。

棒グラフは、一方の軸に数値、もう一方の軸にカテゴリ変数を表示し、異なるカテゴリの出現回数を見ることができます。

となります。
棒グラフは、時系列データだけでなく、カテゴリデータの可視化にも使用できます。

&gt
&gt

Seabornで棒グラフを描画する。

Seaborn で棒グラフを描くには、sns インスタンスで barplot() 関数を呼び出して、可視化したいカテゴリ変数と連続変数を渡せばよいだけです。

import matplotlib.pyplot as plt
import seaborn as sns


sns.set_style('darkgrid')


x = ['A', 'B', 'C']
y = [1, 5, 3]


sns.barplot(x, y)
plt.show()


ここでは、いくつかのカテゴリ変数(ABC)がリストとして用意されています。また、別のリストにはいくつかの連続変数があります – 153。これら2つの関係を棒グラフで視覚化するには、これら2つのリストを sns.barplot() に渡します。

この結果、クリーンでシンプルな棒グラフが得られます。

しかし、多くの場合、これよりもはるかに多くのデータを含むデータセットを扱うことになります。時には、このデータに対して、範囲を指定したり、特定の出現回数を数えたりするような操作が行われることもあります。

このように、膨大な量のデータを扱う場合、必ずと言っていいほどエラーの水増しが発生します。ありがたいことに、Seabornはデフォルトで提供されたデータの平均を計算するため、自動的にエラーバーを適用してくれます。

それでは、古典的なTitanic Datasetをインポートして、そのデータでBar Plotを可視化してみましょう。

import matplotlib.pyplot as plt
import seaborn as sns


# Set Seaborn style
sns.set_style('darkgrid')
# Import Data
titanic_dataset = sns.load_dataset("titanic")


# Construct plot
sns.barplot(x = "sex", y = "survived", data = titanic_dataset)
plt.show()


今回は、データセットの sexsurvived のカラムに、ハードコードされたリストではなく xy を代入しています。

データセットの先頭を表示すると、次のようになります。

print(titanic_dataset.head())


と表示されます。

   survived  pclass     sex   age  sibsp  parch     fare  ...
0         0       3    male  22.0      1      0   7.2500  ...
1         1       1  female  38.0      1      0  71.2833  ...
2         1       3  female  26.0      0      0   7.9250  ...
3         1       1  female  35.0      1      0  53.1000  ...
4         0       3    male  35.0      0      0   8.0500  ...


[5 rows x 15 columns]


変数 xy を代入する際には、これらの特徴量の名前を一致させるようにしてください。

最後に、 data 引数を使って、現在作業中のデータセットと、そこから抽出された特徴量を渡します。この結果は

Seabornで横棒グラフを描画する

棒グラフを垂直方向ではなく水平方向にプロットするには、変数 xy の位置を入れ替えるだけでよいのです。

これにより、カテゴリ変数が Y 軸にプロットされ、水平プロットになります。

import matplotlib.pyplot as plt
import seaborn as sns


x = ['A', 'B', 'C']
y = [1, 5, 3]


sns.barplot(y, x)
plt.show()


この結果、次のようになります。

タイタニックの例に戻ると、これはほとんど同じように行われます。

import matplotlib.pyplot as plt
import seaborn as sns


titanic_dataset = sns.load_dataset("titanic")


sns.barplot(x = "survived", y = "class", data = titanic_dataset)
plt.show()


という結果になります。

Seabornのバープロットの色を変更する

棒グラフの色を変更するのはかなり簡単です。color` 引数は Matplotlib の色を受け取り、それをすべての要素に適用します。

ここでは、blue に変更してみましょう。

import matplotlib.pyplot as plt
import seaborn as sns


x = ['A', 'B', 'C']
y = [1, 5, 3]


sns.barplot(x, y, color='blue')
plt.show()


この結果、以下のようになります。

また、より良い方法として、 palette 引数を設定することで、様々なパレットを受け入れることができます。一般的なのは hls です。

import matplotlib.pyplot as plt
import seaborn as sns


titanic_dataset = sns.load_dataset("titanic")


sns.barplot(x = "embark_town", y = "survived", palette = 'hls', data = titanic_dataset)
plt.show()


これは次のような結果になります。

Seabornでグループ化された棒グラフをプロットする。

プロットにおける棒グラフのグループ化は、一般的な操作です。例えば、乗客の生存率のような共通のデータを比較したいが、何らかの基準でグループ化したいとします。

生存した乗客の関係をクラス(1等、2等、3等)に分けて可視化したいが、どの町から乗船したのかも考慮したいと思う。

これはかなりの量の情報ですが、単純な棒グラフに簡単にまとめることができます。

棒グラフをグループ化するために、 hue 引数を使用します。技術的には、 hue 引数はその名前が示すように、Seaborn に棒グラフの色付けを指示しますが、色付けの過程で、関連するデータをグループ化します。

先ほどの例を見てみましょう。

import matplotlib.pyplot as plt
import seaborn as sns


titanic_dataset = sns.load_dataset("titanic")


sns.barplot(x = "class", y = "survived", hue = "embark_town", data = titanic_dataset)
plt.show()


この結果、以下のようになります。

さて、クイーンズタウンのデータのエラーバーはかなり大きくなっています。これは、生存してクイーンズタウンから乗船した乗客のデータが、一等と二等ではかなり異なることを示しています。

Seabornで棒グラフのグループ化された棒を並べる

棒グラフの順序を、デフォルトの順序(Seabornが最も理にかなっていると思う順序)から、強調したいもの、探索したいものに変更することができます。

これは order 引数で行います。この引数には、値のリストと並べたい順番を指定します。

例えば、これまではクラスを1番目から3番目まで並べていました。もし、その逆をしたい場合はどうすればいいのでしょうか?

import matplotlib.pyplot as plt
import seaborn as sns


titanic_dataset = sns.load_dataset("titanic")


sns.barplot(x = "class", y = "survived", hue = "embark_town", order = ["Third", "Second", "First"], data = titanic_dataset)
plt.show()


このコードを実行すると、次のようになります。

Seaborn棒グラフの信頼区間を変更する。

また、 ci 引数を設定することで、簡単に信頼区間をいじることができます。

例えば、 None を設定することで信頼区間をオフにしたり、 sd を設定することで平均値の代わりに標準偏差を使用したり、 capsize を設定することでエラーバーにキャップサイズを付けて見栄えを良くしたりすることができます。

信頼区間属性について少し遊んでみましょう。

import matplotlib.pyplot as plt
import seaborn as sns


titanic_dataset = sns.load_dataset("titanic")


sns.barplot(x = "class", y = "survived", hue = "embark_town", ci = None, data = titanic_dataset)
plt.show()


これで先ほどのエラーバーが消えました。

または、エラーバーに標準偏差を使用して、キャップサイズを設定することもできます。

import matplotlib.pyplot as plt
import seaborn as sns


titanic_dataset = sns.load_dataset("titanic")


sns.barplot(x = "class", y = "survived", hue = "who", ci = "sd", capsize = 0.1, data = titanic_dataset)
plt.show()


結論

このチュートリアルでは、SeabornとPythonを使ってBar Plotをプロットするいくつかの方法を説明しました。単純なプロット、水平プロットから始まり、それらをカスタマイズしていきました。

棒グラフの色を変えたり、グループ化したり、順番を変えたり、信頼区間を変更したりする方法を説明しました。

データ可視化に興味があり、何から始めたらよいかわからない場合は、Pythonによるデータ可視化に関する書籍のバンドル版をぜひご覧ください。

Pythonによるデータ可視化

データビジュアライゼーションで危険な存在になる

30日間無条件返金保証

初級から上級まで

定期的に無料で更新(最新更新は2021年4月)

ボーナスリソースやガイドを更新

Pythonでデータ可視化 MatplotlibとPandasは、Pythonの基礎知識を持つ全くの初心者が、PandasとMatplotlibを使って、単純なプロットからインタラクティブなボタンを持つアニメーションの3Dプロットまで、これらのライブラリで高度な作業をするための強力な基盤を構築できるように設計された書籍です。

本書は、Pythonの基本的な知識を持つ方を対象としています。
PandasとMatplotlibについて知っておく必要
があることすべてを教えてくれる、詳細なガイドです。

Pythonでデータ可視化」は、Pythonの初級~中級開発者向けの本で、Pandasを使った簡単なデータ操作から、MatplotlibやSeabornといったコアなプロットライブラリを取り上げ、Altairのような宣言的・実験的なライブラリの活用方法までを案内しています。具体的には、11章にわたって、9つのPythonライブラリを取り上げています。Pandas、Matplotlib、Seaborn、Bokeh、Altair、Plotly、GGPlot、GeoPandas、そしてVisPyです。

データビジュアライゼーションのユニークで実用的なガイドとして、あなたがキャリアで使うかもしれない多くのツールを紹介しています。

タイトルとURLをコピーしました