** Souvent, le plan d'équivalence de la fonction scalaire est étudié dans le cadre de recherches qui utilisent pleinement les calculs scientifiques et techniques. ** ** Faire cela avec des tracés standard utilisant matplotlib seul peut ne pas être facile (ou peut-être pas possible pour le moment).
** D'autre part, l'utilisation de mayavi vous permet de dessiner rapidement un plan d'équivalence. mayavi est (apparemment) connue comme une excellente bibliothèque de visualisation tridimensionnelle qui peut être utilisée pour des présentations, des présentations de conférence et des articles [1]. ** **
Ici, comme exemple de dessin d'un plan d'équivalence en utilisant mayavi, le plan d'équivalence de la fonction à trois variables $ f (x, y, z) = \ frac {\ sin (xyz)} {(xyz)} \ tag 1 $ Essayez de dessiner [1,2].
De nombreuses informations sont publiées sur le site officiel de mayavi, et cet article suit.
(1) Tracez quatre plans égaux en divisant les valeurs possibles de f en quatre parties égales.
(2) Dessinez une coupe transversale du plan d'équivalence.
"""
Dessinez un isoplan 3D à l'aide de Mayavi: iso-surface
30 Aug. 2017
"""
import numpy as np
from mayavi import mlab
mlab.init_notebook() #Initialisation du notebook. Assurez-vous de le mettre.
x, y, z = np.ogrid[-5:5:64j, -5:5:64j, -5:5:64j]
scalar = np.sin(x*y*z)/(x*y*z) #Paramètres de fonction
#Génération de la zone de dessin
mlab.figure(1, bgcolor=(1, 1, 1), fgcolor=(0, 0, 0), size=(600, 400)) #Définir la couleur, la taille, etc. d'arrière-plan
mlab.clf()
#Dessinez un isoplan 3D. Définir la palette de couleurs comme jet, les contours correspondent au nombre de divisions_la largeur est l'épaisseur de la ligne, l'opacité est l'opacité(La valeur par défaut est 1.0)
obj=mlab.contour3d(scalar,colormap='jet',\
contours=4,line_width=1.3,opacity=0.8)
mlab.show()
obj #Enfin exécutez l'objet de dessin! Si vous ne le faites pas, rien ne se passe.
"""
Dessinez une coupe transversale d'un isoplan 3D à l'aide de mayavi:
"""
import numpy as np
from mayavi import mlab
mlab.init_notebook()
x, y, z = np.ogrid[-5:5:64j, -5:5:64j, -5:5:64j]
scalar = np.sin(x*y*z)/(x*y*z)
#Réglage de la section transversale:Créez des objets avec des sections transversales parallèles à l'axe des x et à l'axe des y avec les noms ss1 et ss2
ss1=mlab.pipeline.image_plane_widget(mlab.pipeline.scalar_field(scalar),plane_orientation='x_axes',slice_index=10,)
ss2=mlab.pipeline.image_plane_widget(mlab.pipeline.scalar_field(scalar),plane_orientation='y_axes',slice_index=10,)
mlab.show()
ss1
ss2
Mon environnement machine: macOS Sierra 10.12.6 Démarrez le terminal et
Et dit.
Lors du démarrage de Jupyter-notebook 5.0 ou version ultérieure, ** iopub_data_rate_limit doit être défini sur large, sinon la mémoire requise pour dessiner avec mayavi sera insuffisante **. Par conséquent, lors du démarrage de jupyter, il semble nécessaire de définir *** jupyter-notebook --NotebookApp.iopub_data_rate_limit = 10000000000 *** etc. [4].
[1] Tutoriel miyavi: http://docs.enthought.com/mayavi/mayavi/auto/mlab_helper_functions.html [2] À propos de contour3d (anglais) http://mdns.esy.es/2017/06/17/contour3d/
[3] Article Qiita de 2dod, Paramètres lors de l'utilisation de Mayavi avec le bloc-notes Jupyter [4] Concernant iopub_data_rate_limit (anglais): https://github.com/jupyter/notebook/issues/2287
Recommended Posts