matplotlibについて (1)散布図・折れ線図・グラフ設定

Pythonの代表的な作図用ライブラリであるmatplotlibについて何回かに分けてまとめていこうと思います。
自分の理解向上と見直し用として

#準備
```python
import matplotlib.pyplot as plt
```
ライブラリを使用するにあたってはPythonファイル(.py)の最上部にimport文を書く必要があります。
今回はmatplotlibのなかのpyplotというモジュールを使用するので、import matplotlib.pyplotと書きます。
インポートしたら実際にコード内では、matplotlib.pyplot.~~ と書いて使っていきます。
as plt と書いているのは、インポートしたあとに使用する際に毎回matplotlib.pyplot.~~ と書くのは面倒なのでコード内の略称としてpltと名付けますということです。
つまり、コード内では、plt.~~ と書いていきます。
あまり難しいことは考えずに、グラフ書くときは最初にこれを書くんだくらいで良いです。

#散布図(scatter)
最初に散布図の書き方です。

```python:scatter_1.py
import matplotlib.pyplot as plt

x = [2, 5, 8, 10, 15]
y = [4, 16, 8, 20, 5]

plt.scatter(x, y)
plt.show()
```
plt.scatter(x軸の値, y軸の値)でデータをプロットし、
plt.show()でグラフを表示します
以下のようなグラフができます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356598/6033d32b-659c-4c72-5bd1-2ff6ec2e6359.png)
少し、グラフをアレンジしてみましょう。

```python:scatter_2.py
import matplotlib.pyplot as plt

x = [2, 5, 8, 10, 15]
y = [4, 16, 8, 20, 5]

xx = [7, 9, 11, 15, 20]
yy = [3, 8, 2, 10, 8]

plt.scatter(x, y, s=150, c='red')
plt.scatter(xx, yy, s=30, c='green')
plt.show()
```
plt.scatter()の中でs=で数値を渡すととプロットする点の大きさを変えることができます。
またc=で文字列を渡すと点の色を変えることができます。ただし、渡せる文字列は決まっているので注意が必要です。

以下のようなグラフになっていると思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356598/9e767a0a-98d9-6173-5e08-85a5e99933fe.png)

#折れ線図(plot)
次に折れ線グラフの書き方です

```python:plot_1.py
import matplotlib.pyplot as plt

x = [2, 5, 8, 10, 15]
y = [4, 16, 8, 20, 5]

plt.plot(x, y)
plt.show()
```
plt.scatter()と同様に、plt.plot(x軸の値, y軸の値)でグラフを作成できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356598/82925f4a-00d2-aad6-7e16-0663ffbe3351.png)
さきほど同様少しアレンジしてみましょう

```python:plot_2.py
import matplotlib.pyplot as plt

x = [2, 5, 8, 10, 15]
y = [4, 16, 8, 20, 5]

xx = [7, 9, 11, 15, 20]
yy = [3, 8, 2, 10, 8]

plt.plot(x, y, marker='o', c='red', linestyle="solid")
plt.plot(xx, yy, marker='^', c='green', linestyle="dashed")
plt.show()
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356598/15d2d296-e06b-d8f1-4c07-004d90e9ebdf.png)
markerを指定すると値のところに指定したマーカーで点を打つことができます。このmarkerは先ほどの散布図でも指定可能です。
また、linestayleを指定すると実線、破線、点線などを指定可能です。

#グラフ設定
ここまでやってきて、グラフのスタート(左下)が(0,0)じゃないとおもいませんでしたか？
何も指定しないと入力値によって適当に端の値を決めて作成されます。
その設定やタイトルを付けたりしてみましょう.

```python:plot_3.py
import matplotlib.pyplot as plt

x = [2, 5, 8, 10, 15]
y = [4, 16, 8, 20, 5]

xx = [7, 9, 11, 15, 20]
yy = [3, 8, 2, 10, 8]

plt.plot(x, y, marker='o', c='red', linestyle="solid", label="graph1")
plt.plot(xx, yy, marker='^', c='green', linestyle="dashed", label="graph2")

plt.title("My graph")
plt.xlabel("X")
plt.ylabel("Y")
plt.xlim(0,25)
plt.ylim(0,25)
plt.legend()

plt.show()
```
よく使われる設定は上のようなものです。
plt.title()はグラフタイトルを設定します。
plt.xlabel(), plt.ylabel()はx軸, y軸の名前を設定します。
plt.xlim(min, max), plt.ylim(min, max)はそれぞれの軸の端の値を設定します。
plt.legend()はplt.plot()内でlabel=""を指定した際に凡例を表示するようにします。このとき、ただ引数としてlabel=""を入力してもplt.legend()を書かないとグラフには表示されないので注意が必要です。
実行ズルと以下のようなグラフができると思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356598/3d33a407-47aa-a602-2033-3ec59048c253.png)

[matplotlibについて (2)棒グラフ・円グラフ・ヒストグラム](https://qiita.com/yuta_rug/items/95db7129c1f1d5a1b9ad)