データの可視化 | matplotlibの基礎【忘備録】

Python
スポンサーリンク

matplotlibの基礎

データ分析を行う上でデータを可視化することはとても有効な手段の一つ。

データ構造を調べるためのアルゴリズムはたくさんあるが、構造を把握するためにはデータ構造だけを見ても理解できないため直接見るということが大切である。

matplotlib

非常によく使われデータを可視化するための機能が豊富に揃っているライブラリ。
また、matplotlibをベースとしたデザイン面を簡単に強化できるSeabornもあるので、matplotlibをしっかり学んでおくと他のライブラリも使いやすくなる。
また、簡単なアニメーションやインタラクティブなグラフを作ることも可能。

matplotlib Gallery

『Scipy Lecture Notes』
科学技術計算のために Python を始めよう

matplotlibのインストール

コマンドラインまたはターミナルから以下を入力するとインストールできる。

pip3 install matplotlib
#matplotlibの使い方
#事前準備
import matplotlib.pyplot as plt #省略してpltとしてインポートするのが慣例
import numpy as np
%matplotlib inline

※Jupyter notebookを使用している場合、%matplotlib inline を記述しなければグラフが描写されないので注意

#sinの波をプロットしてみる
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-5.0, 5.0, 1000)
y = np.sin(x)

plt.plot(x, y)
plt.show()

#見やすくするためグリッドを表示する
plt.grid(True)
plt.plot(x, y)
plt.show()

グラフの一部を可視化させたい場合

x軸の範囲を指定する

plt.xlim([表示させたい範囲])

y軸の範囲を指定する

plt.ylim([表示させたい範囲])

#グラフの1部だけを可視化する
plt.xlim([0, 4])
plt.plot(x, y)
plt.show()

グラフの要素に名前を設定する

グラフのタイトル
plt.title(‘タイトル’)

グラフのx軸の名前
plt.xlabel(‘x軸の名前’)

グラフのy軸の名前
plt.ylabel(‘y軸の名前’)

凡例をつける
plt.legend()

x = np.linspace(-5.0, 5.0, 1000)
y = np.sin(x)

plt.title('y = sin(x)')
plt.xlabel('x-axis')
plt.ylabel('y-axis')
plt.plot(x, y, label = 'sin')
plt.legend()
plt.show()

1つのグラフで2種類のデータをプロットする

2種類のデータ同じグラフを表示させる場合同じ色だと区別できないのでデータをプロットする際に色の指定をする。

plt.plot(x, y, color=’色指定’) ※プロットの色はHTMLカラーコードで指定できる

※’b’:青, ‘r’:赤, ‘g’:緑, など文字でも指定することができる

x = np.linspace(-5.0, 5.0, 1000)
y_sin = np.sin(x)
y_cos = np.cos(x)

plt.grid(True)
plt.title('sin-cos-graphs')
plt.xlabel('x-axis')
plt.ylabel('y-axis')
plt.plot(x, y_sin, color = 'r', label = 'sin')
plt.plot(x, y_cos, color = 'b', label = 'cos')
plt.legend()
plt.show()

図の大きさを設定する

plt.figure(figsize = (横の大きさ, 縦の大きさ))で図の大きさを指定する。

※大きさの単位はインチ

x = np.linspace(-5.0, 5.0, 1000)
y_sin = np.sin(x)
y_cos = np.cos(x)

#5 x 5 の領域に指定する
plt.figure(figsize = (5,5))
plt.grid(True)
plt.title('sin-cos-graphs')
plt.xlabel('x-axis')
plt.ylabel('y-axis')
plt.plot(x, y_sin, color = 'r', label = 'sin')
plt.plot(x, y_cos, color = 'b', label = 'cos')
plt.legend()
plt.show()

いろいろなグラフ

1.棒グラフの作成

plt.bar(x, y)
import numpy as np
import matplotlib.pyplot as plt

x = np.array([1, 2, 3, 4, 5])
y = np.array([100, 200, 300, 400, 500])
plt.bar(x, y)
plt.show()

#積み上げ棒グラフ
y_1 = np.array([100, 200, 300, 400, 500])
y_2 = np.array([1000, 800, 600, 400, 200])
plt.bar(x, y_1, color = 'g')
plt.bar(x, y_2, bottom = y_1, color = 'y')
plt.show()

2.ヒストグラムの作成

plt.hist(データ, bins = ビン数)
import numpy as np
import matplotlib.pyplot as plt

np.random.seed(0)
data = np.random.randn(1000)

#ビン数20
plt.hist(data, bins = 20)
plt.show()

3.散布図を作成

plt.scatter()
import numpy as np
import matplotlib.pyplot as plt

#乱数を生成
x = np.random.rand(100)
y = np.random.rand(100)

#散布図を描写
plt.scatter(x, y)
plt.show()

#星形
plt.scatter(x, y, s = 600, c = 'yellow', marker = '*', alpha = 0.5,
            linewidths = '2', edgecolors = 'orange')

4.円グラフ

plt.pie(data, labels = ラベルのリスト)
import matplotlib.pyplot as plt

data = [30, 50, 20, 60, 10]
labels = ['orange', 'banana', 'kiwifruit', 'mango', 'apple']

plt.pie(data, labels = labels)
plt.axis('equal') #equalにしないと楕円になる
plt.show()


コメント