プログラミング

【Python】matplotlibでグラフを描画する【チートシート】

どうもなまこです。プログラミングの学習の備忘録を書いています。

Pythonでグラフを描画するライブラリmatplotlibはデータ解析において非常に重宝されます。便利な機能が多い分覚えることが多く、私は毎回調べているのでよく使う機能をまとめてみました。

内容が足りないなと感じたら都度どんどん追加していく予定です。

データ解析でよく使うグラフの表記をまとめています。

ヒストグラム、散布図、折れ線グラフ、棒グラフ、箱ひげ図について記しています。

足りない内容あったら随時追記していく予定です。

事前準備

matplotlibのライブラリをインストールします。

$ pip install matplotlib

グラフを表示するにはmatplotlib.pyplotのライブラリをインポートします。pltで略すのが慣習となっています。

import matplotlib.pyplot as plt
%matplotlib inline

折れ線グラフを作成する

折れ線グラフはグラフの描画でもっとも使われるものかと思います。

データの経時変化や傾向を掴む際に使用すると便利です。

二次元のデータを描画するため、xとyの値を指定します。リストやアレイ、Seriesなどをそれぞれx,yに指定します。

x = [1, 2, 3, 4, 5]
y = [4, 5, 3, 6, 8]
plt.plot(x, y)

散布図を作成する

散布図は点間を直線で結びたくない時に用います。データの相関を確認する時などによく用います。

上記で折れ線グラフで用いたグラフを散布図で示します。

plt.scatter(x, y)

マーカーの種類をxや▲など色々変えることができます。

plt.scatter(x, y, marker='x')
plt.scatter(x, y, marker='^')

ヒストグラムを作成する

ヒストグラムはデータの個数、頻度、バラつきなどを同時に見れるため、データ解析に重宝されます。製造現場ではQC7つ道具の一つとされ、異常値を検知しやすいのが特徴です。

plt.hist(df['latitude'])

デフォルトではbinsの値が10となっており、10個の区間で区切ったデータの個数を表します。データが固まっていて区間を多くしたい場合はbinsの値を増やしていきます。

plt.hist(df['latitude'], bins=20)

箱ひげ図を作成する

箱ひげ図はヒストグラムと同様に統計解析に用いられるグラフです。一目で最大値、最小値、平均値、中央値、四分位数、外れ値を見ることが出来るので便利です。

plt.boxplot([df['latitude'], df['housing_median_age']],
            labels=['latitude','housing_median_age'])


リストにすることで複数表示することができます。

グラフのオプション

軸やラベル名、グラフの色を変えるオプションを紹介していきます。

グラフの色を変える

グラフはcolorの引数で指定することができます。’blue’や’green’など代表的な色は用意されていますが、どのような色を選択できるかどうかは公式ドキュメントが参考になります。’red’は’r’といった略称でも表すことが可能です。

plt.plot(x, y, color='red')

軸ラベルを追加する

xlabel()とylabel()でそれぞれx軸、y軸のラベルを追加することができます。

plt.xlabel('x')
plt.ylabel('y')

x軸、y軸の表示範囲を変更する

x軸とy軸の表示範囲をxlim(), ylim()で設定することができます。最小値と最大値の順で設定します。

plt.xlim(0, 10)
plt.ylim(0, 10)

凡例を追加する

凡例はlegend()で追加することができます。

x = [1, 2, 3, 4, 5]
y1 = [4, 5, 3, 6, 8]
y2 = [3, 5, 7, 4, 12]
plt.plot(x, y1, label='a')
plt.plot(x, y2, color='red', label='b')
plt.legend()

まとめ

ポイント
  • ヒストグラムと箱ひげ図はデータの分布など統計解析に便利
  • 折れ線グラフやデータの傾向を掴む際に便利
  • 散布図は相関などデータの関連性を調べる際に便利

他に使用頻度の高いグラフが出てきたら徐々に追加していきます。

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です