我试图使用ax.scatter绘制一个三维散点图。我已经从fits文件中读取了数据,并将三列数据存储到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值越高,颜色越深。但是我画出的图中没有显示我想要的颜色映射,它们都是默认的蓝色。我做错了什么?谢谢。
c=-z
。 - J Richard Snape