Matplotlib グラフ活用の基礎⑴〜グラフの出力と編集

# Matplotlib  
Matplotlibを活用したデータビジュアライゼーションの基礎を紹介します。
一見複雑そうなデータも、ビジュアル表現を活用することで思わぬ特徴や構造を見つけることができます。

⑴では、簡単なデータを使い折れ線グラフの出力と編集を紹介します。
グラフ出力の初歩とスタイルの編集方法が身につくかと思います。

⑵様々なグラフの出力と編集事例 → https://qiita.com/ryo111/items/8b881ac78c897bdf8cb2
⑶複数のグラフを出力 → https://qiita.com/ryo111/items/dbf266a83b3029aa3a35
■デザイン関連まとめ【カラー・マーカー・スタイル】→ https://qiita.com/ryo111/items/c9b66d4f990c6749f39b

<img width="425" alt="Screen Shot 2019-01-29 at 21.51.38.png" src="https://qiita-image-store.s3.amazonaws.com/0/278569/e11dbe5a-63f1-57f7-4f35-151248343fa1.png">

**Matplotlibとは**
Pythonのグラフ描画ライブラリ、NumPyやpandasで作成・編集したデータのグラフ出力も可能。
機械学習やデーサイエンス分野で活用されています。
https://matplotlib.org/


###0.ライブラリのインポート

```py
import matplotlib.pyplot as plt
%matplotlib inline
```

###1.折れ線グラフの出力

#### **■ 折れ線グラフ　plt.plot()**

```py
#元データ作成
number = [1, 2, 3, 4, 5]
price = [200, 250, 350, 400, 550]

# plotでグラフを描画
plt.plot(number, price);  #(横軸データ, 縦軸データ)

# グラフを表示
plt.show();
```

<img width="383" alt="Screen Shot 2019-01-29 at 23.37.17.png" src="https://qiita-image-store.s3.amazonaws.com/0/278569/105af562-1c23-6504-c2c5-822b5ba5ab3c.png">

###2.グラフの編集

#### **■ タイトルと軸ラベルを追加　　plt.title(),　plt.xlabel(),　plt.ylabel()**

```py
plt.plot(number, price)

# グラフのタイトルを追加
plt.title("number-price")

# x軸のラベルを追加
plt.xlabel("number")

# y軸のラベルを追加
plt.ylabel("price")

plt.show();
```
<img width="391" alt="Screen Shot 2019-01-29 at 23.50.14.png" src="https://qiita-image-store.s3.amazonaws.com/0/278569/92c95b7a-cd93-da41-7694-ff8398289866.png">

#### **■ グリッドの追加　plt.grid()**

```py
plt.plot(number, price)
plt.title("number-price")
plt.xlabel("number")
plt.ylabel("price")

# グリッドを表示する
plt.grid(True)

plt.show();
```

<img width="389" alt="Screen Shot 2019-01-29 at 23.56.30.png" src="https://qiita-image-store.s3.amazonaws.com/0/278569/12667a59-869f-8b7b-911f-d720f8c701b3.png">

#### **■ マーカーの選択・表示　marker="o"**

*よく使われるマーカーリスト*

 - “.”　点
 - “o”　丸
 - “^”　三角形
 - “x”　バツ印
 - “s”　四角形

```py
#丸のマーカーを選択
plt.plot(number, price, marker="o") 

plt.title("number-price")
plt.xlabel("number")
plt.ylabel("price")
plt.grid(True)
plt.show();
```
<img width="399" alt="Screen Shot 2019-01-30 at 0.02.16.png" src="https://qiita-image-store.s3.amazonaws.com/0/278569/8a5a9076-6344-b7cb-fc19-9b48207b7654.png">

#### **■ 色の選択　color='red'**

*主要な色であればカラー名で指定可能*
*カラーコードの指定にも対応（#ff0000等）*


```py
#赤色を選択
plt.plot(number, price, marker="o", color='red') 

plt.title("number-price")
plt.xlabel("number")
plt.ylabel("price")
plt.grid(True)
plt.show();
```
<img width="405" alt="Screen Shot 2019-01-30 at 0.16.55.png" src="https://qiita-image-store.s3.amazonaws.com/0/278569/868713ed-c64d-785e-8682-5ce98be9d76f.png">

#### **■  線のスタイルを選択　linestyle='--'**

*よく使われるラインスタイル*
【　- 　-- 　-. 　:　】


```py
#点線を選択
plt.plot(number, price, marker="o", color='red', linestyle='--') 

plt.title("number-price")
plt.xlabel("number")
plt.ylabel("price")
plt.grid(True)
plt.show();
```

<img width="392" alt="Screen Shot 2019-01-30 at 0.24.39.png" src="https://qiita-image-store.s3.amazonaws.com/0/278569/9721a6f2-b564-1522-ca74-aa4d3e78f648.png">

#### **■ 線の太さを変更　linewidth = 3.0**

```py
#線の太さを3.0に変更
plt.plot(number, price, marker="o", color='red', linestyle='--', linewidth = 3.0) 

plt.title("number-price")
plt.xlabel("number")
plt.ylabel("price")
plt.grid(True)
plt.show();
```
<img width="396" alt="Screen Shot 2019-01-30 at 0.39.21.png" src="https://qiita-image-store.s3.amazonaws.com/0/278569/a6524f74-8927-2d10-74bd-6d36ccdaee0f.png">

#### **■ 複数の折れ線グラフを表示**

```py
#別のデータを作成
price_2 = [600, 450, 500, 300, 250]
```

```py
plt.plot(number, price, marker="o", color='red', linestyle='--', linewidth = 3.0)

# price_2をプロット
plt.plot(number, price_2, marker="D", color='g', linestyle='-', linewidth = 4.0)

plt.title("number-price")
plt.xlabel("number")
plt.ylabel("price")
plt.grid(True)
plt.show();
```
<img width="396" alt="Screen Shot 2019-01-30 at 0.47.14.png" src="https://qiita-image-store.s3.amazonaws.com/0/278569/e50766bd-0a5a-2873-bd56-66a25a5aa279.png">

#### **■ ラベルの表示　label="label_A"**

```py
#ラベルを設定
plt.plot(number, price, marker="o", color='red', linestyle='--', linewidth = 3.0, label="label_A")
plt.plot(number, price_2, marker="D", color='g', linestyle='-', linewidth = 4.0,label="label_B")

plt.title("number-price")
plt.xlabel("number")
plt.ylabel("price")
plt.grid(True)

#ラベルを表示する
plt.legend()

plt.show();
```

<img width="403" alt="Screen Shot 2019-01-30 at 0.56.27.png" src="https://qiita-image-store.s3.amazonaws.com/0/278569/b98c80df-b5af-76c7-a3b9-a580936c6fc3.png">

#### **■ グラフの表示範囲の設定　plt.xlim()　plt.ylim()**

```py
plt.plot(number, price, marker="o", color='red', linestyle='--', linewidth = 3.0, label="label_A")
plt.plot(number, price_2, marker="D", color='g', linestyle='-', linewidth = 4.0,label="label_B")
plt.title("number-price")
plt.xlabel("number")
plt.ylabel("price")
plt.grid(True)
plt.legend()

#x軸、y軸の表示範囲を指定
plt.xlim([0, 6])
plt.ylim([100, 700])

plt.show();
```

<img width="404" alt="Screen Shot 2019-01-30 at 18.47.31.png" src="https://qiita-image-store.s3.amazonaws.com/0/278569/53cfa070-b59e-aded-21d8-c728751c6a2c.png">

#### **■ グラフの大きさを変更　　plt.figure(figsize=(a, b))**

```py
#グラフの縦横の大きさを指定
plt.figure(figsize=(9, 5)) #plt.plotよりも前に書く

plt.plot(number, price, marker="o", color='red', linestyle='--', linewidth = 3.0, label="label_A")
plt.plot(number, price_2, marker="D", color='g', linestyle='-', linewidth = 4.0,label="label_B")
plt.title("number-price")
plt.xlabel("number")
plt.ylabel("price")
plt.grid(True)
plt.legend()
plt.xlim([0, 6])
plt.ylim([100, 700])
plt.figure(figsize=(1, 1))
plt.show();
```
<img width="578" alt="Screen Shot 2019-01-30 at 19.00.38.png" src="https://qiita-image-store.s3.amazonaws.com/0/278569/ef483fc8-d4e8-ccb5-de8c-73f0d2600e72.png">

⑵では、主要なグラフの基礎的な出力方法を紹介します。
　→　https://qiita.com/ryo111/items/8b881ac78c897bdf8cb2