matplotlibで描画する方法

# 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
## 準備
```python
%matplotlib inline #jupyter（notebook,lab）を使用する時は記載
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
```
## 基本的な設定
```python3
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
plt.show()
```
![base.png](https://qiita-image-store.s3.amazonaws.com/0/172576/364fb9ae-2516-f084-550a-02af4daa1f5f.png)
何も設定しない状態だとこのような図が描画されます．
## 図の大きさ
```python
fig = plt.figure(
    figsize = (16,9), #縦横比を変更(横，縦)
    facecolor = 'white' #後ろの色を変更できます．デフォルトは透明
)
```
## 複数描画
```python
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)
```
![download-2.png](https://qiita-image-store.s3.amazonaws.com/0/172576/1d2a1dd7-a0e1-b295-2317-6c2f63f97c0a.png)
## 図の体裁
```python
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()
```
![download-4.png](https://qiita-image-store.s3.amazonaws.com/0/172576/119f597d-caaf-b2de-536a-87a36a456ccf.png)
## 散布図
```python
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()
```
![download-3.png](https://qiita-image-store.s3.amazonaws.com/0/172576/58b2dd7b-3dc1-774d-4882-12cb920894c4.png)
##　散布図＋折れ線図
```python
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()
```
![download-5.png](https://qiita-image-store.s3.amazonaws.com/0/172576/dcc921b3-9b1a-aaae-a6bf-9aa44ebbef4a.png)

## 目盛りを任意の幅で変更
```python
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()
```
グラフの目盛りを任意の幅に変更したい時の方法(ついでにグリッドの幅も変更できます)
![download-4.png](https://qiita-image-store.s3.amazonaws.com/0/172576/db7ae03a-6cb6-cafc-29c8-3ff97d8a112e.png)

## 棒グラフの設定
```python
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()
```
自分がよく使う棒グラフの書き方です
![download-5.png](https://qiita-image-store.s3.amazonaws.com/0/172576/dc381e0f-0238-fd04-cf98-154484195be2.png)