【Python】でグラフを描画する方法

Pythonでグラフを描画するための方法はいくつもあります。
本記事では、どんな方法があるのかざっくりと解説したのち、もっとも人気なMatplotlibを使って描画する方法を解説します。

Pythonでグラフを描画する3つの方法

1. Matplotlibでグラフ描画

Pythonでグラフを描画するライブラリでもっとも有名なのが「Matplotlib」です。PandasやNumpyと相性が良いため、データサイエンスの領域で多用されます。

Pandasとは、表としてデータを操作するためのライブラリ(Excelのようなもの)
Numpyとは、行列としてデータを操作するためのライブラリ

それでは、Matplotlibを使った、シンプルなグラフを描画してみましょう。

import matplotlib.pyplot as plt #ライブラリのインポート

Figure, ax = plt.subplots() #グラフを定義

x = [1,2,3,4,5] #x軸用のデータ
y = [1,2,3,4,5] #y軸用のデータ

ax.plot(x,y) #プロット

plt.show() #グラフを出力
Figure.savefig('test.jpg', dpi=300) #グラフを保存(dpiで解像度指定)

すると、次のようなグラフが出力されます。

python_グラフ_Matplotlib
Matplotlibで記述したグラフ

参考サイト:Matplotlibの公式サイト

2. Pandasのplot()でグラフ描画

先ほどチラッと触れた、表計算ライブラリPandasでもグラフを描画できます。言葉だけではイメージしづらいと思いますので、まずはPandasで表を作ってみましょう。

import pandas as pd #pandasのインポート
df = pd.DataFrame([1,2,3,4,5,6,7,8,9,10],columns=['data']) #データフレームの定義

pandasのデータフレームオブジェクトをdfとして作成しました。では、dfはどのようなオブジェクトかというと、まさに表になっています。

pandas_dataframe_グラフ用
Pandasのデータフレーム

この表オブジェクトに対して、plot()メソッドを使うと、自動的にグラフが描画されます。

df.plot() #で、グラフが自動的に描画される
pandasでグラフを描画
pandasでグラフ描画

では、列の数を増やしてみましょう。

import pandas as pd #pandasのインポート
datas = [
    [1,2,3,4,5,6,7,8,9,10],
    [1,4,9,16,25,36,49,64,81,100]
]
df = pd.DataFrame(datas).T #Tは転置させているだけ
df.columns = ['data1','data2'] #カラム名を指定
df

すると、次のような2列のデータフレームができます。

pandas_グラフ描画用データ
2列のデータフレーム

これに対して、plot()メソッドを適応させると、2種類の線が描画されたグラフが出力されます。

pandas_グラフ描画
dataframeをプロット

3. Seabornでグラフ描画

Seabornはデータサイエンスの分野で、データの可視化によく使われるライブラリです。
Matplotlibベースのライブラリで、美しくグラフを描画できます。

import seaborn as sns
penguins = sns.load_dataset("penguins") #ペンギンのデータセットを読み込む
sns.histplot(data=penguins, x="flipper_length_mm", hue="species", multiple="stack") #ヒストグラムを作成

上記のコードを実行すると、次のようなグラフが描画されます。

seaborn_グラフ描画
seabornでグラフ描画

参考サイト:Seaborn公式サイト

Matplotlibを例に、Pythonでのグラフ描画をしてみる

これまで3種類のグラフ描画方法を見てきました。それぞれグラフの描画方法は異なっていますが、実は全てMatplotlibをベースにグラフを描画する仕様になっています。

ですので、ここからは、基本のMatplotlibで様々なグラフを描画する方法を見ていきましょう。

折れ線グラフ

次のようなコードを書くと、折れ線グラフを描画することができます。

import matplotlib.pyplot as plt #モジュールのインポート

Figure, ax = plt.subplots() #グラフの定義

x = [1,2,3,4,5] #x軸用のデータ作成
y=[10,5,8,7,3] #y軸用のデータ作成

ax.plot(x,y) #グラフにプロット
matplotlib_折れ線グラフ
上記のコードを実行すると、このようなグラフが生成されます。

詳しく:Python】Matplotlibで折れ線グラフを描画

棒グラフ

次のようなコードをかくと、棒グラフを描画することができます。

import matplotlib.pyplot as plt #モジュールのインポート

Figure, ax = plt.subplots() #グラフを定義

x = ['A', 'B', 'C', 'D', 'E'] #x軸用のラベル
y = [10, 25, 17, 9, 20] #y軸用のデータ
ax.bar(x, y) #プロット

plt.show() #グラフを表示
matplotlib_棒グラフ
上記のコードを実行すると、このような棒グラフが生成されます。

詳しく:【Python】Matplotlibで棒グラフを書いてみる

散布図

次のようなコードを実行すると、散布図を描画することができます。

import matplotlib.pyplot as plt #モジュールのインポート

x = [1,2,3,4,5] #x軸用のデータ
y = [1,2,3,4,5] #y軸用のデータ
y2 = [2,4,6,8,10] #y軸用のデータ
y3 = [3,6,9,12,15] #y軸用のデータ

Figure, ax = plt.subplots() #グラフを定義

ax.scatter(x,y) #プロット
ax.scatter(x,y2) #プロット
ax.scatter(x,y3) #プロット

plt.show() #グラフを描画
matplotlib_散布図
上記のコード実行で生成される散布図

詳しく:【Python】Matplotlibで散布図を作る

Appendix

Pythonでグラフ描画する方法の初歩的な部分を紹介しました。最後に、グラフを描画するために必要なことを整理します。

  1. データの整理方法を知る→(PandasやNumpy、リストや辞書として)
  2. matplotlibの基本的なプロット方法を知る
  3. グラフのカスタマイズをする

現在私は化学の実験が生業です。matplotlibがあれば10万桁のデータも一瞬で可視化できるので便利です。(下に例を紹介)

python_グラフ描画
実験データを可視化した例

ちょっと論文チックにカスタマイズしてみました。コードさえ作っておけば、日々のデータビジュアライゼーションも一瞬で終わります。

一緒にグラフ職人を目指して頑張りましょう!

参考書籍:「Pythonによるデータ分析入門 第2版