Colabで遊ぶ scatter で random に点を打つ

Colab で遊ぶシリーズ

scatter で random に点を打つ。 カラーも random

できれば Colab で開いて実行してみてください

https://colab.research.google.com/github/kalz2q/mycolabnotebooks/blob/master/z_scattercolor.ipynb

# scatter で random に点を打つ。 色も random
import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots() 

data = {'a': np.random.randn(50),
        'b': np.random.randn(50),
        'c': [np.random.random(3) for i in range(50)],
        'd': np.abs(np.random.randn(50)*700)}
ax.scatter('a', 'b', c='c', s='d', data=data)
ax.set_axis_off()
plt.savefig("test.svg", format="svg")
plt.show()

解説

乱数発生の random は numpy の random を使っている。 いろいろあって便利です。

randn は正規分布の乱数で標準偏差 1 の乱数を発生する。 できあがった画像がなんとなく中心よりで収まりがいいのはそのせいです。 引数は必要な個数で、返り値は ndarray です。 何も入れないと配列ではなく float が返される。 今回は x, y に 50 個の配列を使います。

random は 0 と 1 の間のフラットな乱数を返す。 色はこれで選んでいます。 RGB にするために引数に 3 を指定して、それを 50 回繰返して配列に入れている。 配列にするのに list comprehension 内包表記を使っている。

点のサイズは乱数の配列を700倍している。 ndarray は数値を足したり掛けたりすると入れるの要素に足されたり掛けられたりするので便利。 そうでないと map を使うことになるのかな。 今回使わなかったので考えていません。

今回は画像を楽しむためのものなので座標の目盛りは不要なので消している。

ax.set_axis_off()

これもしばらく前に探して見つけたものです。

plt.savefig("test.svg", format="svg")

はてなの記事にするために画像を svg に書き出しています。