これができないと話にならない、2D / 3D 散布図。
MATLABでいうところのscatterやscatter3相当のもの。
matplotlibを使ってやる。
2D/3Dの差はaxisを2Dで作るか3Dで作るかを変えるだけで、あとはほとんど一緒。
#2次元の場合
import numpy as np
import matplotlib.cm as cm
import matplotlib.pyplot as plt
x = np.random.rand(500, 2)
y=((x-0.5)**2).sum(axis=1)**0.5
fig = plt.figure(figsize=(6.4,4.8),dpi=72)
# figsizeはインチ単位。デフォルト(6.4,4.8)
# dpiはデフォルト 100
#2d散布図
ax = fig.add_subplot(1, 1, 1, title='Title', xlabel='X', ylabel='Y')
#titleなどはあとからax.set_title() ax.set_xlabel などで変更可
sc = ax.scatter(x[:, 0], x[:, 1], vmin=0, vmax=1, c=y, cmap=cm.jet)
#カラーバー
cb=fig.colorbar(sc)
plt.show()
fig.savefig('2d.png')
#3次元の場合
#カラーバー
cb=fig.colorbar(sc)
plt.show()
fig.savefig('/Users/miyawaki/Desktop/2d.png')
import numpy as np
import matplotlib.cm as cm
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d.axes3d import Axes3D
x = np.random.rand(500, 3)
y=((x-0.5)**2).sum(axis=1)**0.5
fig = plt.figure(figsize=(6.4,4.8),dpi=72)
# figsizeはインチ単位。デフォルト(6.4,4.8)
# dpiはデフォルト 100
#3D散布図
ax = Axes3D(fig)
sc=ax.scatter(x[:, 0], x[:, 1], x[:, 2], c=y, cmap=cm.jet)
#タイトルと軸ラベル
ax.set_title("Title", fontsize=8)
ax.set_xlabel("X", fontsize=7)
ax.set_ylabel("Y", fontsize=7)
ax.set_zlabel("Z", fontsize=7)
#tick labelのフォントサイズ
plt.tick_params(labelsize = 6)
#カラーバー 0.6倍に縮小
cb=fig.colorbar(sc,shrink = 0.6)
#水平にするときはorientationにhorizontalを追加
#cb=fig.colorbar(sc,shrink = 0.6, orientation="horizontal")
#カラーバーのlabel、tick label
cb.set_label("Color", fontsize=7)
cb.ax.tick_params(labelsize=6)
plt.show()
fig.savefig('3d.png')
…微調整はおいおい調べましょう。