Matplotlib グラフデザイン関連まとめ【カラー・マーカー・スタイル】

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

この記事では、ビジュアル面でより完成度の高いグラフを作成するためのメモをまとめました。

<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.基本カラーの紹介

#### **■ １文字で表現できる基本カラーリスト**

- 'b' : ブルー
- 'r' : レッド
- 'g' : グリーン
- 'c' : シアン（水色）
- 'm' : マゼンダ（赤紫）
- 'y' : 黄色
- 'k' : 黒
- 'w' : 白

#### **■ サンプルをグラフに出力**

```py
colorlist = ["r", "g", "b", "c", "m", "y", "k", "w"]

plt.rcParams["axes.facecolor"] = (1,1,1,0)
plt.figure(figsize=(10, 7), facecolor='#DCDDDD')
for i, color in enumerate(colorlist):
    plt.plot([8-i]*5, color=color, linewidth = 10.0, label=color)
    
plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left')
plt.show;
```

<img width="662" alt="Screen Shot 2019-02-01 at 15.32.26.png" src="https://qiita-image-store.s3.amazonaws.com/0/278569/aa63d0ff-ca2f-f6cc-8bf5-3aad5c1c17a9.png">

###2.マーカーの紹介

#### **■ 主要マーカーリスト**

- 'o' : 丸
- 'v' : 下向き三角形
- '^' : 上向き三角形
- '<' : 左向き三角形
- '>' : 右向き三角形
- '8' : 八角形
- 's' : 四角形
- 'p' : 五角形
- '*' : 星
- 'h' : 六角形 (縦長)
- 'H' : 六角形 (横長)
- 'D' : 菱形
- 'd' : 細い菱形
- 'P' : プラス
- 'X' : バツ

#### **■ マーカーリスト出力**

```py
markers = ['o', 'v', '^', '<', '>', '8', 's', 'p', '*', 'h', 'H', 'D', 'd', 'P', 'X']

plt.figure(figsize=(4, 10))
plt.xlim([-1, 3])
for i, marker in enumerate(markers):
    plt.plot([15-i]*3, marker=marker, markersize=13, markerfacecolor='k', color='w', label=marker)

plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left', prop={'size': 15})
plt.show;
```
<img width="376" alt="Screen Shot 2019-02-01 at 16.37.06.png" src="https://qiita-image-store.s3.amazonaws.com/0/278569/561558b0-d596-e447-e265-aff7760b94dd.png">

###3.スタイル

#### **■ スタイルの種類を出力**

```py
>>> plt.style.available # スタイルのリストを表示

['seaborn-dark',
 'seaborn-darkgrid',
 'seaborn-ticks',
 'fivethirtyeight',
 'seaborn-whitegrid',
 'classic',
 '_classic_test',
 'fast',
 'seaborn-talk',
 'seaborn-dark-palette',
 'seaborn-bright',
 'seaborn-pastel',
 'grayscale',
 'seaborn-notebook',
 'ggplot',
 'seaborn-colorblind',
 'seaborn-muted',
 'seaborn',
 'Solarize_Light2',
 'seaborn-paper',
 'bmh',
 'tableau-colorblind10',
 'seaborn-white',
 'dark_background',
 'seaborn-poster',
 'seaborn-deep']
```

#### **■ グラフを用意**

```py
days = [1, 2, 3, 4, 5]
price1 = [200, 250, 350, 400, 440]
price2 = [600, 450, 520, 300, 250]
price3 = [400, 370, 270, 320, 280]

plt.plot(days, price1, marker="o", color='red', linestyle='--', linewidth = 3.0, label="label_A")
plt.plot(days, price2, marker="D", color='g', linestyle='-', linewidth = 4.0,label="label_B")
plt.plot(days, price3, marker="p", color='m', linestyle=':', linewidth = 4.0,label="label_C")

plt.title("price")
plt.xlabel("day")
plt.ylabel("price")
plt.legend()

plt.show();
```
<img width="404" alt="Screen Shot 2019-02-01 at 22.20.28.png" src="https://qiita-image-store.s3.amazonaws.com/0/278569/263ab98d-f9a9-c275-ac95-0c26d0f1e9a5.png">


#### **■ スタイルを適用**

リストの中から使いやすく特徴的がわかりやすいものを使い同じグラフを出力します。

```py
plt.style.use('ggplot')

#グラフのコードは省略
```
<img width="408" alt="Screen Shot 2019-02-01 at 22.45.35.png" src="https://qiita-image-store.s3.amazonaws.com/0/278569/8cbd94a2-ca21-1c5c-f059-5b5bf73c6858.png">

```py
plt.style.use('fivethirtyeight')

#グラフのコードは省略
```

<img width="440" alt="Screen Shot 2019-02-01 at 22.46.21.png" src="https://qiita-image-store.s3.amazonaws.com/0/278569/3ed63424-7144-2ed7-147b-991f4d345b55.png">


```py
plt.style.use('classic')

#グラフのコードは省略
```

<img width="565" alt="Screen Shot 2019-02-01 at 23.03.33.png" src="https://qiita-image-store.s3.amazonaws.com/0/278569/6e9e879c-da69-2377-af07-7eedf97104ea.png">

```py
plt.style.use('seaborn-talk')

#グラフのコードは省略
```

<img width="665" alt="Screen Shot 2019-02-01 at 22.48.56.png" src="https://qiita-image-store.s3.amazonaws.com/0/278569/5a4c06bc-c0db-3499-c5c4-805bf114a2b9.png">

```py
plt.style.use('Solarize_Light2')

#グラフのコードは省略
```
<img width="398" alt="Screen Shot 2019-02-01 at 23.05.36.png" src="https://qiita-image-store.s3.amazonaws.com/0/278569/34e89587-960a-ab64-0dc0-7b97d5e2a1d3.png">

```py
plt.style.use('bmh')

#グラフのコードは省略
```
<img width="395" alt="Screen Shot 2019-02-01 at 23.06.41.png" src="https://qiita-image-store.s3.amazonaws.com/0/278569/af0b5399-8f62-e720-1d2b-4c7f0edd50fd.png">

```py
plt.style.use('dark_background')

#グラフのコードは省略
```
<img width="387" alt="Screen Shot 2019-02-01 at 23.15.41.png" src="https://qiita-image-store.s3.amazonaws.com/0/278569/e110a906-aaf4-8691-763e-c3b3e494848b.png">

```py
plt.style.use('seaborn-poster')

#グラフのコードは省略
```
<img width="794" alt="Screen Shot 2019-02-01 at 23.16.56.png" src="https://qiita-image-store.s3.amazonaws.com/0/278569/a49c6fee-f42f-5f21-9942-899f09805dbf.png">