見出し画像

Pythonのmatplotlibを使った散布図のmarker34種類を実際に出力してみた。目で見てわかるPython

Pythonを使って散布図を書いてみよう

Pythonというプログラム言語を使い、matplotlibというグラフ描画ライブラリーを使うと、散布図を簡単に描くことができます。ここでは、まずは、散布図を書いてみましょう。


import numpy as np
import matplotlib.pyplot as plt

N = 50

# X,Yデータをランダムに生成 
x = np.random.rand(N)
y = np.random.rand(N)

# color番号
colors = np.random.rand(N)

# バブルの大きさをばらけさせる 
area = 10 * np.pi * (15 * np.random.rand(N)) ** 2

# グラフの大きさ指定
plt.figure(figsize = (15, 6))

# グラフを描画
plt.scatter(x, y, s = area, c = colors, alpha = 0.5)
plt.grid(True)

上のようなコードを書くと、以下のようなグラフを書くことができます。

スクリーンショット 2020-01-11 10.01.31

このグラフの場合、1つ1つの点が「円の形」で描画されています。しかし、グラフを描画している plt.scatter(x, y, s = area, c = colors, alpha = 0.5)の箇所にmarkerを入れることで、他にも様々なマーカーを記述することができます。ここでは、一つ一つのmarkerを実際に書いてみてその結果を比べていきます。

なお、「Pythonのコードがあっても動かし方わからないよ!」って人は、Google Colaboratory使うと良いでしょう。無料で登録出来て、Pythonコードコピペすれば動くようになりますよ。

(1)marker="."

plt.scatter(x, y, s = area, c = colors, alpha = 0.5,marker=".")

スクリーンショット 2020-01-11 10.07.06

(2)marker=","

plt.scatter(x, y, s = area, c = colors, alpha = 0.5,marker=",")

スクリーンショット 2020-01-11 10.08.10

(3)marker="o"

plt.scatter(x, y, s = area, c = colors, alpha = 0.5,marker="o")

スクリーンショット 2020-01-11 10.08.46

(4)marker="v"

plt.scatter(x, y, s = area, c = colors, alpha = 0.5,marker="v")

スクリーンショット 2020-01-11 10.10.48

(5)marker="^"

plt.scatter(x, y, s = area, c = colors, alpha = 0.5,marker="^")

スクリーンショット 2020-01-11 10.11.57

(6)marker="<"

plt.scatter(x, y, s = area, c = colors, alpha = 0.5,marker="<")

スクリーンショット 2020-01-11 10.12.50

(7)marker=">"

plt.scatter(x, y, s = area, c = colors, alpha = 0.5,marker=">")

スクリーンショット 2020-01-11 10.14.34

(8)marker="1"

plt.scatter(x, y, s = area, c = colors, alpha = 0.5,marker="1")

スクリーンショット 2020-01-11 10.15.26

(9)marker="2"

plt.scatter(x, y, s = area, c = colors, alpha = 0.5,marker="2")

スクリーンショット 2020-01-11 10.16.32

(10)marker="3"

plt.scatter(x, y, s = area, c = colors, alpha = 0.5,marker="3")

スクリーンショット 2020-01-11 10.17.28

(11)marker="4"

plt.scatter(x, y, s = area, c = colors, alpha = 0.5,marker="4")

スクリーンショット 2020-01-11 10.18.16

(12)marker="8"

plt.scatter(x, y, s = area, c = colors, alpha = 0.5,marker="8")

スクリーンショット 2020-01-11 10.19.42

(13)marker="s"

plt.scatter(x, y, s = area, c = colors, alpha = 0.5,marker="s")

スクリーンショット 2020-01-11 10.20.35

(14)marker="p"

plt.scatter(x, y, s = area, c = colors, alpha = 0.5,marker="p")

スクリーンショット 2020-01-11 10.22.24

(15)marker="P"

plt.scatter(x, y, s = area, c = colors, alpha = 0.5,marker="P")

スクリーンショット 2020-01-11 10.23.00

(16)marker="*"

plt.scatter(x, y, s = area, c = colors, alpha = 0.5,marker="*")

スクリーンショット 2020-01-11 10.23.45

(17)marker="h"

plt.scatter(x, y, s = area, c = colors, alpha = 0.5,marker="h")

スクリーンショット 2020-01-11 10.24.34

(18)marker="H"

plt.scatter(x, y, s = area, c = colors, alpha = 0.5,marker="H")

スクリーンショット 2020-01-11 10.26.15

(19)marker="+"

plt.scatter(x, y, s = area, c = colors, alpha = 0.5,marker="+")

スクリーンショット 2020-01-11 10.28.09

(20)marker="x"

plt.scatter(x, y, s = area, c = colors, alpha = 0.5,marker="x")

スクリーンショット 2020-01-11 10.29.20

(21)marker="X"

plt.scatter(x, y, s = area, c = colors, alpha = 0.5,marker="X")

スクリーンショット 2020-01-11 10.30.02

(22)marker="D"

plt.scatter(x, y, s = area, c = colors, alpha = 0.5,marker="D")

スクリーンショット 2020-01-11 10.32.09

(23)marker="d"

plt.scatter(x, y, s = area, c = colors, alpha = 0.5,marker="d")

スクリーンショット 2020-01-11 10.32.55

(24)marker="|"

plt.scatter(x, y, s = area, c = colors, alpha = 0.5,marker="|")

スクリーンショット 2020-01-11 10.34.36

(25)marker="_"

plt.scatter(x, y, s = area, c = colors, alpha = 0.5,marker="|")

スクリーンショット 2020-01-11 10.36.06

(26)marker=""​​

plt.scatter(x, y, s = area, c = colors, alpha = 0.5,marker="")

スクリーンショット 2020-01-11 11.05.20

markerとして何も指定しないと空のグラフが表示されます。

(27)marker="$f$"

plt.scatter(x, y, s = area, c = colors, alpha = 0.5,marker="$f$")

スクリーンショット 2020-01-11 11.06.45

$で挟んで文字を入れることで、任意の文字列を散布図として表現することができます。

(28)marker="$love$"

plt.scatter(x, y, s = area, c = colors, alpha = 0.5,marker="$f$")

スクリーンショット 2020-01-11 11.07.47

こんな風に文字列を指定することも出来ます。

(29)marker="$の$"

plt.scatter(x, y, s = area, c = colors, alpha = 0.5,marker="$の$")

スクリーンショット 2020-01-11 11.14.27

日本語でも表示出来ますが、デフォルトの設定だと通らない文字列もあるので、日本語フォントを設定する必要があります。「の」はたまたま通りました。

(30)marker="$♫$"

plt.scatter(x, y, s = area, c = colors, alpha = 0.5,marker="$♫$")

スクリーンショット 2020-01-11 11.17.25

こんな記号を指定することも出来ます。

(31)marker="$❤️$"

plt.scatter(x, y, s = area, c = colors, alpha = 0.5,marker="$❤️$")

スクリーンショット 2020-01-11 11.20.29

(32)marker="$?$"

plt.scatter(x, y, s = area, c = colors, alpha = 0.5,marker="$?$")

スクリーンショット 2020-01-11 11.22.08

(33)marker="$😄$"

plt.scatter(x, y, s = area, c = colors, alpha = 0.5,marker="$?$")

スクリーンショット 2020-01-11 11.25.41

まさかの絵文字も通ります。

(33)marker="$😆$"

plt.scatter(x, y, s = area, c = colors, alpha = 0.5,marker="$😆$")

スクリーンショット 2020-01-11 11.27.01

(34)marker="$😅$"

plt.scatter(x, y, s = area, c = colors, alpha = 0.5,marker="$😅$")

スクリーンショット 2020-01-11 11.28.18

絵文字はまだまだ色々通るので、ぜひ色々と試してみてください。Pythonって本当に楽しいですね。さようなら、さようなら、さようならー。

サポートされた費用は、また別のカンファレンス参加費などに当てようと思います。