Matplotlibでマーカーサイズを変えて3D空間に散布図をプロットする方法
概要
Matplotlibを使えば、マーカーのサイズをデータ値に応じて変化させながら、3D空間に散布図を描くことができます。点ごとに大きさを変えることで、3次元データをより直感的かつ効果的に可視化できます。ここでは、その具体的な手順とサンプルコードを紹介します。
実装手順
- 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。
- numpyを使って xs、ys、zs のデータポイントを作成します。
- マーカーサイズを制御するための変数 s を用意します。
- figure() メソッドで新しい図を作成(または既存の図をアクティブ化)します。
- add_subplot() メソッドで
projection='3d'を指定し、3D軸を持つサブプロットを追加します。 - scatter() メソッドで xs、ys、zs のデータポイントをプロットします。引数
sに配列を渡すことで、点ごとに異なるマーカーサイズを設定できます。 - show() メソッドで図を表示します。
コード例
import numpy as np from matplotlib import pyplot as plt plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True xs = np.random.randint(low=8, high=30, size=35) ys = np.random.randint(130, 195, 35) zs = np.random.randint(30, 160, 35) s = zs / ((ys * 0.01) ** 2) fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.scatter(ys, zs, xs, s=s * 5, c=xs, cmap='copper') plt.show()
コードのポイント
この例では、35個のランダムな整数データを生成し、s = zs / ((ys * 0.01) ** 2) という計算式でマーカーサイズを求めています。これはBMI(体格指数)の計算式と同じ形で、zs と ys の値に応じて各点の大きさが変化します。s * 5 とすることで、マーカー全体のサイズを見やすい大きさに調整しています。
また、c=xs を指定することで各点の色が xs の値に基づいて変わり、cmap='copper' によって銅色系のカラーマップが適用されます。これにより、位置だけでなくサイズと色の3つの情報を同時に表現できます。
出力結果

-
Matplotlibでプロット上のグリッドサイズを定義する方法
Matplotlib を使ってプロット上にグリッド(格子線)を表示し、その間隔(サイズ)を自由に定義する方法を紹介します。基本的な流れは以下の手順のとおりです。 グリッドサイズを定義する手順 figure() メソッドを使って、新しい図(Figure)を作成するか、既存の図をアクティブにします。 サブプロット配置の一部として、add_subplot() で図に Axes(座標軸)を追加します。 入力リストを渡して曲線をプロットします。 margins() メソッドで x 軸・y 軸のマージンを 0 に設定します。 X 軸のグリッド位置を指定するには、set_ticks() に目盛りの座標
-
Matplotlibで任意のデータを使って4Dプロットを作成する方法
Matplotlibでは、x・y・z の3つの座標データに加え、c(色) を第4の次元として割り当てることで、いわゆる「4Dプロット」を実現できます。これは実際には3D散布図にカラーマップを組み合わせたものであり、点の位置が3次元情報を、色がもう1つの変数を表現します。以下の手順に従うことで、標準正規分布に従うランダムなデータポイントを使った4Dプロットを簡単に作成できます。手順figure() メソッドを使用して、新しい図を作成するか、既存の図をアクティブ化します。サブプロット構成の一部として、3D投影(projection=3d)を指定した Axes を追加します。NumPy を使って x