matplotlibの基礎
データ分析を行う上でデータを可視化することはとても有効な手段の一つ。
データ構造を調べるためのアルゴリズムはたくさんあるが、構造を把握するためにはデータ構造だけを見ても理解できないため直接見るということが大切である。
matplotlib
非常によく使われデータを可視化するための機能が豊富に揃っているライブラリ。
また、matplotlibをベースとしたデザイン面を簡単に強化できるSeabornもあるので、matplotlibをしっかり学んでおくと他のライブラリも使いやすくなる。
また、簡単なアニメーションやインタラクティブなグラフを作ることも可能。
『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()
コメント