Python学習講座

PythonエンジニアによるPython3学習サイト

matplotlib

matplotlib入門 散布図編3 3次元散布図


前回の続きです。今回は散布図の発展的な内容について説明します。

散布図の点が持つ量を色で表現する

以前の説明で、点に色を付ける方法を説明しましたが、今回は連続的な量を持つ点に色付けしたい場合です。先に出力結果を添付します。
実行結果

ソースコードは以下のとおりです。

from matplotlib import pyplot as plt
import numpy as np

# ランダムな点を生成する(x, y座標)
x = np.random.rand(50)
y = np.random.rand(50)

# ランダムな点を生成する(それぞれの点が持つ量)
value = np.random.rand(50)

# 散布図を表示、各点の色にvalueを指定する
plt.scatter(x, y, s=100, c=value, cmap='Blues')

# カラーバーを表示
plt.colorbar()

plt.show()

scatterの引数の色でリストを指定するところがポイントで、後はcolorbarでカラーバーを追加することができます。

3次元散布図

3次元の散布図を描画する場合、mpl_toolkits.mplot3d.axes3dというライブラリを追加でインポートします。これも後は2次元の時と同様に、系列毎のリストをscatter関数の引数で指定するだけです。

from matplotlib import pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d.axes3d import Axes3D


# ランダムな点を生成する(x, y, z座標)
x = np.random.rand(50)
y = np.random.rand(50)
z = np.random.rand(50)


# 散布図を表示、各点の色にvalueを指定する
fig = plt.figure()
ax = Axes3D(fig)
p = ax.scatter(x, y, s=100, c='b', cmap='Blues')
 
plt.show()

実行結果

このように3次元で出力されます。当然マウスでグリグリ動かすことも可能です。が、描画する点が多くなると、環境によっては激重になります。あと、人に見せるときにもう一点注意。奥の点ほど色が薄くなりますが、色毎に値が異なるわけではありません。カラーバーを使った表示にする場合は以下のようになります。

3次元でカラーバーを利用する場合

from matplotlib import pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d.axes3d import Axes3D


# ランダムな点を生成する(x, y, z座標)
x = np.random.rand(50)
y = np.random.rand(50)
z = np.random.rand(50)


# ランダムな点を生成する(それぞれの点が持つ量)
value = np.random.rand(50)

# 散布図を表示、各点の色にvalueを指定する
fig = plt.figure()
ax = Axes3D(fig)
p = ax.scatter(x, y, s=100, c=value, cmap='Blues')
 
# カラーバーを表示
fig.colorbar(p)

plt.show()

ざっと三回に分けて散布図の描き方を説明しましたがいかがだったでしょうか?実務で利用できる散布図の描画が簡単にしかも綺麗にできる、ということがおわかりいただけたかと思います。

-matplotlib
-