【2日目】Plotlyで始める「魅せるデータ分析」～多種多様なグラフを描画する～

# 初めに
　みなさんこんにちは！今回は2日目ですね！今回の内容は前回の内容を見ているとすんなり理解できると思うので、
もしPlotlyに慣れていなかったら1日目のページをみたほうが良いかもしれません。
　今回はPlotlyで棒グラフやヒストグラムなど、様々な種類のグラフを描画してみましょう！

## リンク
[【0日目】Plotlyで始める「魅せるデータ分析」～概要編～](https://qiita.com/yamazaki_yuto/items/fafb732e4b26648b0eb4)
[【1日目】Plotlyで始める「魅せるデータ分析」～超基本編～](https://qiita.com/yamazaki_yuto/items/016cd3eb200c911f4365)
【2日目】Plotlyで始める「魅せるデータ分析」～多種多様なグラフを描画する～　←イマココ
# 様々なグラフ
　ここではグラフの種類を把握することを目的とし、できる限りシンプルなコードでグラフを記述していきます。
Plotlyはここで紹介しきれないほどたくさんのグラフを作成できますので、以下ではよく使用されるグラフにフォーカスして紹介してきます。
作成できるグラフの一覧は[こちらのリンク](https://plotly.com/python-api-reference/generated/plotly.graph_objects.Figure.html)のdataに渡せるプロパティから確認することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3067701/3899b1bd-076e-c020-20c7-67c05d9a92bf.png)


## 折れ線グラフ
さっそく書いていきましょう。1つ目は1日目でも紹介した折れ線グラフとなります。
```session01.py
import plotly.graph_objects as go
data = go.Scatter(
    x=[1, 2, 3],
    y=[1, 3, 2]
)
fig = go.Figure(
    data=data,
)
fig.show()
```

![2-01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3067701/4b366971-ba84-f5b2-339d-80fa49b87c0b.png)
`go.Scatter()`を使用します。非常にシンプルでxおよびyプロパティにリストを渡してあげるだけで書くことができます。
また、go.Scatter()クラスは特に拡張性が高いため、別途詳細に説明します。

## 3D折れ線グラフ(3D散布図?)
```session02.py
import plotly.graph_objects as go
data = go.Scatter3d(
    x=[1, 2, 3],
    y=[1, 3, 2],
    z=[5, 4, 3]
)
fig = go.Figure(
    data=data,
)
fig.show()
```
![2-02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3067701/1a388232-541a-5d67-cbb3-82e697abbac9.png)

 `go.Scatter3d()`を使用します。zにリストを新たに渡してあげると3Dグラフを作成することができます。
HTML上でぐりぐりまわせるので、楽しいですね。

## 棒グラフ
```session03.py
import plotly.graph_objects as go
data = go.Bar(
    x=["斎藤", "田中", "鈴木"],
    y=[100, 87, 60]
)
fig = go.Figure(
    data=data,
)
fig.show()
```
![2-03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3067701/04f1916f-8cfc-1bcb-a273-92ca7bb6ebd0.png)
　`go.Bar()`を使用します。棒グラフはxにラベルのリスト(ここでは["斎藤", "田中" ,"鈴木"]のリスト)とy軸に値のリストを渡してあげることで作成することができます。


## ヒストグラム 
```session04.py
import plotly.graph_objects as go
x = [0, 0, 0, 1, 2, 2, 3, 3, 3, 3, 3]
data = go.Histogram(
    x=x
)
fig = go.Figure(
    data=data,
)
fig.show()
```
![2-04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3067701/d5242d8f-dfd4-6200-3050-de0b1733b0c7.png)

 `go.Histogram()`を使用します。xにリストを渡すだけで作成することができます。
上記の例では0を3つ、1を1つ、2を2つ、3を5つ渡しているため、下記のようなグラフになってます。


## 極座標のグラフ
```session05.py
import plotly.graph_objects as go
data = go.Scatterpolar(
    r=[1, 2, 3],
    theta=[90, 180, 270],
    mode="markers",
)
fig = go.Figure(
    data=data
)
fig.show()
```
![2-05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3067701/77f2bb57-f63f-eef0-856d-d3b26dd3de85.png)

 `go.Scatterpolar()`を使用します。極座標系を表すグラフです。rには中心からの距離（半径）、thetaには角度のリストを渡します。
今回は見やすさのためにmode="markers"としていますが、なくても大丈夫です。



## 円グラフ
```session06.py
import plotly.graph_objects as go
data = go.Pie(
    labels=["A型", "O型", "B型", "AB型"],
    values=[4500, 2500, 1053, 500]
)
fig = go.Figure(
    data=data
)
fig.show()
```
![2-06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3067701/8b3ebaf3-0f04-6c6f-642e-478eb1404948.png)
  `go.Pie()`を使用します。
labelsにラベルのリスト、valuesに値のリストを渡します。

# まとめ
　今回は多種多様なグラフを作成してみました。
他にもたくさんありますし、また一つの種類ごとに細かな調整等も可能ですので、いろいろカスタマイズしてみて挙動を確認してみると勉強になるかもしれません。本日はボリューム少なめですが、皆様の参考になることを心から祈っております。