matplotlibでグラフを描画
matplotlibで描画する方法を紹介していきます.
jupyterを使用して書いています.
よく書き方を忘れるので自分用の忘備録の意味も込めて書いていきます.
つらつらと追加しているので読みづらいかもしれません.
全てを理解して書いていないところがあったりするので間違っていたら教えてください.
- 2018/09/08 初書き
開発環境
2018/09/08現在
- OS: Mac OS X EI Capitan (10.11.6)
- Python 3.7.0
- matplotlib 2.2.3
- jupyter
- pandas 0.23.4
準備
%matplotlib inline #jupyter(notebook,lab)を使用する時は記載
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
基本的な設定
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
plt.show()
図の大きさ
fig = plt.figure(
figsize = (16,9), #縦横比を変更(横,縦)
facecolor = 'white' #後ろの色を変更できます.デフォルトは透明
)
複数描画
ax1 = fig.add_subplot(2,2,1)#(行,列,番号)
ax2 = fig.add_subplot(2,2,2)
ax3 = fig.add_subplot(2,2,3)
ax4 = fig.add_subplot(2,2,4)
図の体裁
fig = plt.figure(facecolor='white')
ax = fig.add_subplot(1,1,1)
ax.set_ylabel('label_y' ,fontsize=15)
ax.set_xlabel('label_x', fontsize=25)
ax.set_ylim(-10,10) #y軸の範囲指定
ax.set_xlim(-20,20) #x軸の範囲指定
ax.grid()#グリッド描画
plt.show()
散布図
from numpy.random import *
x = rand(100)
y = rand(100)
fig = plt.figure(facecolor='white')
ax = fig.add_subplot(1,1,1)
ax.plot(x,y,'o')
plt.show()
x = np.arange(0,10,1)
y = np.arange(0,10,1)
fig = plt.figure(figsize=(16,9),facecolor='white')
ax = fig.add_subplot(1,1,1)
ax.set_ylabel('label_y' ,fontsize=25)
ax.set_xlabel('label_x', fontsize=25)
ax.set_ylim(-1,10)
ax.set_xlim(-1,10)
ax.grid()
ax.plot(x,y,'o-',ms=20,lw=6,c='blue',label='test')
ax.legend(fontsize=30)
plt.show()
目盛りを任意の幅で変更
import matplotlib.ticker as ticker
x = np.arange(0,10,1)
y = np.arange(0,10,1)
co = 'black'
fig = plt.figure(figsize=(16,9),facecolor='white')
ax = fig.add_subplot(1,1,1)
ax.set_ylabel('label_y' ,fontsize=25)
ax.set_xlabel('label_x', fontsize=25)
ax.set_ylim(-1,10)
ax.set_xlim(-1,10)
ax.xaxis.set_major_locator(ticker.MultipleLocator(1))
ax.yaxis.set_major_locator(ticker.MultipleLocator(1))
ax.xaxis.set_minor_locator(ticker.MultipleLocator(0.2))
ax.yaxis.set_minor_locator(ticker.MultipleLocator(0.2))
ax.grid()
ax.plot(x,y,'o-',ms=20,lw=6,c='blue',label='test')
ax.legend(fontsize=30)
plt.show()
グラフの目盛りを任意の幅に変更したい時の方法(ついでにグリッドの幅も変更できます)
棒グラフの設定
from numpy.random import *
data1 = randint(1,10,5)
data2 = randint(1,10,5)
data3 = rand(5)
data4 = rand(5)
X = np.arange(0,5,1)
plt.rcParams['font.family'] = 'Times New Roman' #全体のフォントを変更できる
plt.rcParams['font.size'] = 20 #全体のフォントサイズを設定,個別での設定はその時に
fig = plt.figure(figsize=(16,9),facecolor='white')
ax = fig.add_subplot(1,1,1)
ax.bar(X+0.2, data1, yerr=data3, color='blue', ecolor='black', width=0.35, label='data1')
ax.bar(X-0.2, data2, yerr=data4, color='orange', ecolor='black', width=0.35, label='data3')
ax.legend(bbox_to_anchor=(1, 1),fontsize=25) #凡例を描画する
ax.set_ylabel('y label', fontsize=25) #軸のラベルを描画
ax.set_xlabel('x label', fontsize=25)
ax.set_ylim(0,10) #グラフの描画する範囲を変更
ax.set_xticks(X) #目盛りを描画する位置を決定
ax.set_xticklabels(['A','B','C','D','E'], fontsize=20)
plt.show()