1. supersaiakujin

    Posted

    supersaiakujin
Changes in title
+[Python]Matplotlibで散布図を作成する方法
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,199 @@
+
+散布図を書くにはscatterを使う。
+以下にいくつかの例を示す。
+
+## 単純な散布図
+下記は最も単純な散布図の例。
+
+```lang:python
+import numpy as np
+import matplotlib.pyplot as plt
+
+# generate data
+x = np.random.rand(100)
+y = np.random.rand(100)
+
+fig = plt.figure()
+
+ax = fig.add_subplot(1,1,1)
+
+ax.scatter(x,y)
+
+ax.set_title('first scatter plot')
+ax.set_xlabel('x')
+ax.set_ylabel('y')
+
+fig.show()
+```
+![scatter01.png](https://qiita-image-store.s3.amazonaws.com/0/100523/53d0dd61-99f4-c8eb-3659-aa8602f0a85a.png)
+
+## データごとに色を変える
+パラメータにc='red'のように指定して色を変えることができる。
+
+```lang:python
+import numpy as np
+import matplotlib.pyplot as plt
+
+# generate data
+x1 = np.random.rand(100)*0.5
+y1 = np.random.rand(100)
+
+x2 = np.random.rand(100)*0.5 + 0.5
+y2 = np.random.rand(100)
+
+fig = plt.figure()
+
+ax = fig.add_subplot(1,1,1)
+
+ax.scatter(x1,y1, c='red')
+ax.scatter(x2,y2, c='blue')
+
+ax.set_title('second scatter plot')
+ax.set_xlabel('x')
+ax.set_ylabel('y')
+
+fig.show()
+```
+![scatter02.png](https://qiita-image-store.s3.amazonaws.com/0/100523/7af37198-eaad-b08b-c604-305775260c41.png)
+
+RGBで指定しても同じ結果になる。この時値は0.0 - 1.0の値で指定する。
+
+```lang:python
+ax.scatter(x1,y1, c=(1.0,0,0))
+ax.scatter(x2,y2, c=(0, 0, 1.0))
+```
+
+## 凡例とgrid線の追加
+凡例はlegendを使用する。引数で表示する位置を変えることができる。
+grid線を引きたい場合はgrid(True)とする。
+
+|位置|
+|:----:|
+|upper right|
+|upper left |
+|lower left |
+|lower right|
+|right |
+|center left|
+|center right|
+|lower center|
+|upper center|
+|center |
+
+```lang:python
+import numpy as np
+import matplotlib.pyplot as plt
+
+# generate data
+x1 = np.random.rand(100)*0.5
+y1 = np.random.rand(100)*0.5
+
+x2 = np.random.rand(100)*0.5 + 0.5
+y2 = np.random.rand(100)*0.5
+
+x3 = np.random.rand(100)*0.5
+y3 = np.random.rand(100)*0.5 + 0.5
+
+x4 = np.random.rand(100)*0.5 + 0.5
+y4 = np.random.rand(100)*0.5 + 0.5
+
+fig = plt.figure()
+
+ax = fig.add_subplot(1,1,1)
+
+ax.scatter(x1,y1, c='red', label='group1')
+ax.scatter(x2,y2, c='blue', label='group2')
+ax.scatter(x3,y3, c='green', label='group3')
+ax.scatter(x4,y4, c='yellow', label='group4')
+
+ax.set_title('third scatter plot')
+ax.set_xlabel('x')
+ax.set_ylabel('y')
+
+ax.grid(True)
+
+ax.legend(loc='upper left')
+fig.show()
+```
+![scatter03.png](https://qiita-image-store.s3.amazonaws.com/0/100523/46ab6f30-773e-cec3-daed-2a8d59ca5d1e.png)
+
+## マーカーを変える
+マーカーはmarker='o'のように指定する。
+代表的な4つのマーカを例に使用した。他にもいろいろある。[ここ](http://matplotlib.org/api/markers_api.html#module-matplotlib.markers)を参照するとよい。
+
+```lang:python
+import numpy as np
+import matplotlib.pyplot as plt
+
+# generate data
+x1 = np.random.rand(100)*0.5
+y1 = np.random.rand(100)*0.5
+
+x2 = np.random.rand(100)*0.5 + 0.5
+y2 = np.random.rand(100)*0.5
+
+x3 = np.random.rand(100)*0.5
+y3 = np.random.rand(100)*0.5 + 0.5
+
+x4 = np.random.rand(100)*0.5 + 0.5
+y4 = np.random.rand(100)*0.5 + 0.5
+
+fig = plt.figure()
+
+ax = fig.add_subplot(1,1,1)
+
+ax.scatter(x1,y1, c='red', marker='.', label='group1')
+ax.scatter(x2,y2, c='blue',marker='o', label='group2')
+ax.scatter(x3,y3, c='green',marker='^', label='group3')
+ax.scatter(x4,y4, c='yellow',marker='s', label='group4')
+
+ax.set_title('fourth scatter plot')
+ax.set_xlabel('x')
+ax.set_ylabel('y')
+
+ax.grid(True)
+
+ax.legend(loc='upper left')
+fig.show()
+```
+![scatter04.png](https://qiita-image-store.s3.amazonaws.com/0/100523/1014c993-9362-c8b1-dee5-2927d5bcc8fc.png)
+
+## マーカーの大きさを変える
+マーカーの大きさはパラメータでs=20のようにする。デフォルトの大きさは20。
+
+```lang:python
+import numpy as np
+import matplotlib.pyplot as plt
+
+# generate data
+x1 = np.random.rand(100)*0.5
+y1 = np.random.rand(100)*0.5
+
+x2 = np.random.rand(100)*0.5 + 0.5
+y2 = np.random.rand(100)*0.5
+
+x3 = np.random.rand(100)*0.5
+y3 = np.random.rand(100)*0.5 + 0.5
+
+x4 = np.random.rand(100)*0.5 + 0.5
+y4 = np.random.rand(100)*0.5 + 0.5
+
+fig = plt.figure()
+
+ax = fig.add_subplot(1,1,1)
+
+ax.scatter(x1,y1, c='red', s=20, marker='o', label='group1')
+ax.scatter(x2,y2, c='blue',s=40, marker='o', label='group2')
+ax.scatter(x3,y3, c='green',s=80, marker='o', label='group3')
+ax.scatter(x4,y4, c='yellow',s=120, marker='o', label='group4')
+
+ax.set_title('fifth scatter plot')
+ax.set_xlabel('x')
+ax.set_ylabel('y')
+
+ax.grid(True)
+
+ax.legend(loc='upper left')
+fig.show()
+```
+![scatter05.png](https://qiita-image-store.s3.amazonaws.com/0/100523/0eddee23-fb54-f05c-eef6-b70a7dbd9b6e.png)