Pythonでグラフを描画するための方法はいくつもあります。
本記事では、どんな方法があるのかざっくりと解説したのち、もっとも人気なMatplotlibを使って描画する方法を解説します。
Contents
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で解像度指定)
すると、次のようなグラフが出力されます。
参考サイト: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はどのようなオブジェクトかというと、まさに表になっています。
この表オブジェクトに対して、plot()メソッドを使うと、自動的にグラフが描画されます。
df.plot() #で、グラフが自動的に描画される
では、列の数を増やしてみましょう。
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列のデータフレームができます。
これに対して、plot()メソッドを適応させると、2種類の線が描画されたグラフが出力されます。
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公式サイト
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) #グラフにプロット
詳しく: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() #グラフを表示
詳しく:【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() #グラフを描画
Appendix
Pythonでグラフ描画する方法の初歩的な部分を紹介しました。最後に、グラフを描画するために必要なことを整理します。
- データの整理方法を知る→(PandasやNumpy、リストや辞書として)
- matplotlibの基本的なプロット方法を知る
- グラフのカスタマイズをする
現在私は化学の実験が生業です。matplotlibがあれば10万桁のデータも一瞬で可視化できるので便利です。(下に例を紹介)
ちょっと論文チックにカスタマイズしてみました。コードさえ作っておけば、日々のデータビジュアライゼーションも一瞬で終わります。
一緒にグラフ職人を目指して頑張りましょう!
参考書籍:「Pythonによるデータ分析入門 第2版」