2016-12-21 2 views
0

Pourquoi la palette de couleurs est-elle discrétisée dans 3 couleurs différentes alors que je m'attends à ce qu'elle soit continue ici?Obtenir une carte de couleurs continue dans mlab.contour3d

import numpy as np 
from mayavi import mlab 

cube = np.zeros((100,100,100)) 
cube[10:90,10:90,10:90] = np.linspace(0,1,80) 
mlab.contour3d(cube, colormap="jet", opacity=0.5) 

Mayavi output

Aussi, pourquoi est-il une seule couleur sur mon cube si ne définissez pas l'opacité à être inférieure à 1?

Répondre

1

Un contour est la courbe (en 3D la surface) qui visite des points de valeur égale. Pour les données numériques, il se situera sur les points de la grille ou entre eux par interpolation. La partie "externe" de votre cube est composée de zéros, donc il y a un saut aux index 10 et 90 qui crée la surface du contour.

Les limites internes sont créées lorsque les valeurs de votre grille croisent les valeurs de contour équidistantes (il y a apparemment 3 valeurs au total par défaut). Enfin, comme la partie extérieure du cube est entièrement nulle, sans transparence, vous ne verrez que cela et aucune variation de valeur n'indique une variation de couleur.

Je donne un exemple ci-dessous avec plus de niveaux (9) et sans la limite zéro, qui donne des plans de contour horizontaux.

import numpy as np 
from mayavi import mlab 

cube = np.zeros((100,100,100)) 
cube[:,:,:] = np.linspace(0, 1, np.prod(cube.shape)).reshape(cube.shape).T 
mlab.contour3d(cube, colormap="jet", opacity=0.5, contours=9) 
mlab.show() 

Vous pouvez également envisager des "plans de coupe" qui produisent des tranches 2D dans des données 3D. Il y a des exemples dans ces pages: http://docs.enthought.com/mayavi/mayavi/mlab_case_studies.html et http://docs.enthought.com/mayavi/mayavi/auto/examples.html