ax.scatter を使用して 3D 散乱プロットをプロットしようとしています。フィット ファイルからデータを読み取り、3 つの列のデータを x、y、z に格納しました。そして、x、y、z データが同じサイズであることを確認しました。z は 0 から 1 の間で正規化されています。
import numpy as np
import matplotlib
from matplotlib import pylab,mlab,pyplot,cm
plt = pyplot
import pyfits as pf
from mpl_toolkits.mplot3d import Axes3D
import fitsio
data = fitsio.read("xxx.fits")
x=data["x"]
y=data["y"]
z=data["z"]
z = (z-np.nanmin(z)) /(np.nanmax(z) - np.nanmin(z))
Cen3D = plt.figure()
ax = Cen3D.add_subplot(111, projection='3d')
cmap=cm.ScalarMappable(norm=z, cmap=plt.get_cmap('hot'))
ax.scatter(x,y,z,zdir=u'z',cmap=cmap)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
plt.show()
私が達成しようとしているのは、色を使用して z のサイズを示すことです。z の値が高いほど色が濃くなります。しかし、必要なカラーマップなしでプロットを取得し続けています。それらはすべて同じデフォルトの青色です。私は何を間違えましたか?ありがとう。