Python

【Python】グラフの作り方

Pythonで最も有名なグラフ描画をするライブラリであるmatplotlibとseabornを使ったグラフ作成の方法について紹介します.

折れ線グラフの作成方法

はじめに,折れ線グラフの作成方法を紹介します.

グラフを作成する際の基本的な流れは下記のようになります.

➀ 必要なライブラリ・モジュールをインポートする

➁ データを作成または読み込む

➂ figure関数でグラフの描画領域を定義する(省略可)

➃ 作成した描画領域にplot関数でプロットを追加する

➄ savefig関数で作成したグラフを出力する

では,実際にサンプルコードを紹介します.

# ライブラリのインポート
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt

# データの作成
x = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
y = np.array([0, 3, 1, 5, 6, 6, 1, 9, 8, 7])

# グラフの描画領域の用意
fig = plt.figure()

# 折れ線グラフの作成
plt.plot(x, y, color='black')
plt.title("Sample Graph")
plt.xlabel("x")
plt.ylabel("y")

# グラフ画像の保存
plt.savefig("graph.png")

このサンプルコードによって作成された画像が以下になります.

棒グラフの作成方法

棒グラフの作成には,seabornというデータ可視化ライブラリを用います.matplotlibのみでも作成は可能ですがseabornを用いた方がより少ないコードで図を作成できるためここではseabornを用います.

サンプルデータとして多くのサイトで使われているkaggleのTitanicデータセットを使用します。

棒グラフを作成する際に用いる関数は,catplotを用います.指定する引数は以下になります.

・x:可視化したい変数
・data:変数を持つデータフレーム
・kind:作成するグラフの種類(棒グラフの場合,”count”)

サンプルコードと生成されたグラフ画像がこちらです.

# ライブラリのインポート
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
import seaborn as sns

# データの読み込み
titanic = sns.load_dataset("titanic")
print(titanic.head())
   survived  pclass     sex   age  ...  deck  embark_town  alive  alone
0         0       3    male  22.0  ...   NaN  Southampton     no  False
1         1       1  female  38.0  ...     C    Cherbourg    yes  False
2         1       3  female  26.0  ...   NaN  Southampton    yes   True
3         1       1  female  35.0  ...     C  Southampton    yes  False
4         0       3    male  35.0  ...   NaN  Southampton     no   True

# 棒グラフの作成
sns.catplot(x="pclass", data=titanic, kind="count")

# グラフ画像の保存
plt.savefig("graph.png")

このように,seabornを用いることで一行で棒グラフを作成することができます.

ヒストグラム(度数分布図)の作成方法

一つの変数の分布を階級に分けて表現するのがヒストグラムです.

ヒストグラムを作成する際に用いる関数は,displotになります.引数には、PandasのSeries、Numpyの1d-array、もしくはPythonのリストを指定します。

サンプルコードと生成されたグラフ画像がこちらです. (棒グラフの作成で用いたコードの途中からです)

# ヒストグラムの作成
sns.displot(titanic['age'])

散布図の作成方法

2つの数量データの関係性を調べる際は,散布図を用います.

散布図はscatterplot関数を用いて作成します.引数は以下のようになります.

・x:横軸
・y:縦軸
・data:データフレーム

今回は, Titanicデータセット の「age」と「fare」を用いて紹介します. (棒グラフの作成で用いたコードの途中からです)

# 散布図の生成
sns.scatterplot(x='age', y='fare', data=titanic)

おわりに

matplotlibとseabornを使って簡単にグラフを作成する方法を紹介しました.

今回紹介したグラフ以外や,プロットの色などのデザインの変更方法は今後紹介します!