3

クラスター内の銀河の位置 (基本的には緯度と経度のようなもの) を速度の関数として表示する 3D 散布図を作成しました。ただし、データ ポイントの色をコード内の別の変数 h で決定するように依頼されました。変数の目的は重要ではありませんが、実際のコードでは、すべてのデータ ポイントが 4 つの配列から決定されます。これを行う方法を調べるのに長い時間を費やした後、私はついに(ほぼ)それを手に入れました。唯一の問題は、プロットすると、プロットを移動して別の方向から見るとすぐにドットの色が変わることです。また、カラーバーを表示しようとすると問題が発生します。

import pylab as p
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import matplotlib.cm as cm

ra=np.random.random((100))
dec=np.random.random((100))
h=np.random.random((100))
z=np.random.random((100))

datamin=min(h)
datamax=max(h)
fig=p.figure()

ax3D=fig.add_subplot(111, projection='3d')
ax3D.scatter(ra, dec, z, c=h, vmin=datamin, vmax=datamax, 
marker='o', cmap=cm.Spectral)

p.title("MKW4s-Position vs Velocity")
p.show()
4

1 に答える 1

1

「再描画時に色が変わる」問題はバグでしたが、最新リリース (1.1.1) で修正されたようです。1.1.1 で正常に動作することをテストして確認しました。

の場合、colorbarマッピング可能が必要です。から返されたコレクションを使用できますscatter

import pylab as p
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import matplotlib.cm as cm

ra=np.random.random((100))
dec=np.random.random((100))
h=np.random.random((100))
z=np.random.random((100))

datamin=min(h)
datamax=max(h)
fig=p.figure()

ax3D=fig.add_subplot(111, projection='3d')
collection = ax3D.scatter(ra, dec, z, c=h, vmin=datamin, vmax=datamax, 
                          marker='o', cmap=cm.Spectral)
p.colorbar(collection)

p.title("MKW4s-Position vs Velocity")
p.show()
于 2012-10-29T03:41:45.330 に答える