Python

Matplotlibで様々なグラフを描く

By 2021年3月24日March 25th, 2021No Comments

PythonのMatplotlibを使えば様々なグラフを描くことができます。今回の記事では、Matplotlibで描けるいくつかのグラフの書き方について解説します。

普段描くグラフの殆どが今回紹介するグラフを用いて表現できると思うので、ぜひ使い方を学びましょう。

Udemyの動画学習でもPythonを勉強しよう!

「平日の夜の勉強会には時間が間に合わなくて参加できない」「通勤時間のわずかな隙間時間を勉強時間にあてたい」「本ではよく分からないところを動画で理解を深めたい」そんなあなたはUdemyの動画学習がお勧めです!

UdemyのPythonおすすめ33講座レビューリスト

Matplotlibについてまだ学習済みでない人はMatplotlibのグラフの書き方の基礎をまとめているのでそちらの記事をご参照ください。

Matplotlibの使い方 – 本町オープンソースラボ -大阪でのIT勉強会多数開催!大阪本町のエンジニア向けコミュニティ- (hosl.dev)

折れ線グラフ

折れ線グラフは、数量の大きさを表す点を線で結んだグラフです。折れ線グラフを使うと“データの変化の推移”を分かりやすく表現することができます。そのため、多くのビジネスシーンで使われます。

以下、折れ線グラフのサンプルコードです。Matplotlib.pyplotとNumpyをインポートするところから始まります。

import matplotlib.pyplot as plt # matplotlib.pyplotをpltとして呼び出します
import numpy as np  # numpyをnpとして呼び出します

x = np.array([0, 1, 2, 3, 4, 5])  # 横軸
y = np.array([32, 63, 16, 46, 93, 23])  # 縦軸

plt.plot(x, y)  # 折れ線グラフを生成します
plt.show()  # グラフを出力します

また、他のグラフにも適用できますが、グラフの色や太さの指定をすることができます。

上のサンプルコードのプロットにおいて()内の引数にcolor(色)とlinewidth(太さ)を加えます。

plt.plot(x, y, color = 'green', linewidth=7)

これをplt.show()で出力すると以下のようになります。

線が緑になり、太くなりました。他にもlinestyleを引数に加えることで破線を描くこともできます。

散布図

散布図は2つの項目の間にある関係を見つけるのに役立つグラフです。縦軸と横軸のそれぞれの要素に相関関係があるかを視覚的に確認できます。

Matplotlib.pyplotモジュールのscatter関数を使用することで散布図を描画できます。

以下、散布図のサンプルコードです。(import文は省略しています。)

x = np.random.rand(20)  # 横軸(0以上1未満の乱数を20個生成します。)
y = np.random.rand(20)  # 縦軸
# 散布図にはplt.scatterを用い、引数にはx軸とy軸になる配列を入れます
plt.scatter(x, y) plt.show()

棒グラフ

棒グラフは2つ以上の値を比較するのに使われます。人口の推移やアンケートの集計結果など、さまざまな統計に置いて利用されています。

matplotlib.pyplotモジュールのbar関数で作ることができます。以下、棒グラフのサンプルコードです。

x = np.arange(2000, 2020, 1)  # 横軸(2000から2020まで間隔1で配列を作ります)
y = np.linspace(100, 1000, 20)  # 縦軸
plt.bar(x, y)  # 棒グラフを生成
plt.show()  # グラフを出力

横向きに棒グラフを表示させるにはplt.barhを使います。上のサンプルコードのplt.bar(x, y)をplt.barh(x, y)に変えてplt.show()すると以下のようなグラフになります。

ヒストグラム

ヒストグラムでは度数分布表を視覚的に分かりやすく表現できます。ヒストグラムによってひと目でばらつき方を把握することができます。

pyplotモジュールのhist関数で作ります。ヒストグラムを作る際には、階級の幅を設定する必要があります。階級の幅は引数の値の範囲をbinsで割ったものになります。

以下、ヒストグラムのサンプルコードです。

# 平均 100, 標準偏差 30 の正規乱数を1000個生成
x = np.random.normal(50, 10, 1000)
# ヒストグラムを生成します(xの最小値から最大値を10分割したものが階級の幅)
plt.hist(x, bins=10) 
plt.show()

円グラフ

数値や量よりも割合を強調したいときには円グラフを使います。pypotモジュールのpie関数で作ることができます。

以下、円グラフのサンプルコードです。

x = np.array([316, 98, 55, 36, 60])
label = ["Tokyo", "Osaka", "Aichi", "Fukuoka", "Hokkaido"]
# 円グラフを生成します。引数のlabelsでxに対する各ラベルを指定しています。
plt.pie(x, labels=label)
plt.show()

まとめ

この記事では、Matplotlibで描くことのできるグラフを確認しました。Matplotlibを使って簡単に多くの種類のグラフを描くことができます。データの可視化には必須のライブラリなのでぜひ使いこなせるようなりましょう。

Udemyの動画学習でもPythonを勉強しよう!

「平日の夜の勉強会には時間が間に合わなくて参加できない」「通勤時間のわずかな隙間時間を勉強時間にあてたい」「本ではよく分からないところを動画で理解を深めたい」そんなあなたはUdemyの動画学習がお勧めです!

UdemyのPythonおすすめ33講座レビューリスト
HOSL

Author HOSL

More posts by HOSL