6

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 の値が高いほど色が濃くなります。しかし、必要なカラーマップなしでプロットを取得し続けています。それらはすべて同じデフォルトの青色です。私は何を間違えましたか?ありがとう。

4

2 に答える 2