Python3メモ - matplotlibでグラフ描画

matplotlibとは

 Matplotlibは、プログラミング言語Pythonおよびその科学計算用ライブラリNumPyのためのグラフ描画ライブラリである。オブジェクト指向APIを提供しており、様々な種類のグラフを描画する能力を持つ。

https://ja.wikipedia.org/wiki/Matplotlib より引用

モジュールのインポート

Anaconda経由でpythonをインストールした場合は以下の通りでインポートできる

from matplotlib import pyplot as plt # 長いのでエイリアス設定

折れ線グラフをプロット(二次関数)

def draw_graph(x,y):
  plt.plot(x,y) # plot関数でプロット
  plt.xlabel("x") # x軸ラベルの設定
  plt.ylabel("y") # y軸ラベルの設定
  plt.title("f(x) = x^2") # タイトルの設定
  plt.axis(ymin=-1000, ymax= 12500, xmin=-150, xmax=150) # x,yの範囲を設定
  plt.show()

 

x = [i for i in range(-100, 101)]
y = list()
for xi in x:
  y.append(xi ** 2)
draw_graph(x,y)

f:id:Szarny:20170715234730p:plain

折れ線グラフをプロット(複数のグラフと凡例の表示)

def draw_graph(x,y1,y2,y3):
  plt.plot(x,y1,x,y2,x,y3,marker="o") # 複数のグラフのプロットとマーカーの設定("o"は黒丸)
  plt.xlabel("date(2017/7/xx)")
  plt.ylabel("maximum temperature")
  plt.title("Weather Forecast")
  plt.axis(ymin=15, ymax=40)
  plt.legend(["Hokkaido","Tohoku","Tokyo"]) # 凡例の設定(リスト形式)
  plt.grid() # グリッド線の表示
  plt.show() 

 

x = [i for i in range(15, 24)]
hok = [33,28,27,24,27,29,30,28,28]
toh = [31,30,33,30,30,31,32,32,31]
tok = [34,34,36,33,32,33,33,34,32]

draw_graph(x,hok,toh,tok)

f:id:Szarny:20170715235246p:plain

 散布図をプロット

import random
x = list()
y = list()
for i in range(100):
  x.append(random.random())
  y.append(random.random())

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

f:id:Szarny:20170716001830p:plain

 棒グラフ

def bar_chart(data, label):
  N = len(data)
  plt.barh(range(N), data) # 棒グラフの描画
  plt.yticks(range(N), label) # y軸のラベルを設定
  plt.xlabel("Person(100 million)")
  plt.ylabel("Country")
  plt.title("Population")
  plt.show()

data = [13.49, 3.10, 1.26, 0.82]
label = ["China", "America", "Japan", "Deutsch"]
bar_chart(data, label) 

f:id:Szarny:20170716002733p:plain

 ヒストグラムの描画

x = list()
for i in range(1000):
  x.append(random.gauss(0, 10)) # random.gauss(mean, S.D.)
plt.hist(x, bins=100) # ヒストグラムの生成
plt.show() 

f:id:Szarny:20170716003355p:plain