J'essaie d'utiliser ax.scatter pour tracer un graphique de diffusion 3D. J'ai lu les données d'un fichier fits et stocké les données de trois colonnes dans x, y, z. Et j'ai vérifié que les données x, y, z sont de la même taille. z a été normalisé entre 0 et 1.Matplotlib 3D utiliser colormap
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()
Ce que j'essaie de faire, c'est d'utiliser la couleur pour indiquer la taille de z. Comme une valeur plus élevée de z obtiendra une couleur plus sombre. Mais je continue à obtenir un complot sans la palette de couleurs que je veux, ils sont tous la même couleur par défaut en bleu. Qu'ai-je fait de mal? Merci.
Ça a marché, merci! – frankgut
@frankgut Comme cette réponse a fonctionné pour vous s'il vous plaît [accepter la réponse] (http://stackoverflow.com/help/someone-answers), de sorte que la question montre comme réponse. –
Notez également - si vous voulez que les valeurs * supérieures * aient une couleur * plus foncée * selon le Q, utilisez 'c = -z'. –