Calcul scientifique / technique avec Python] Dessin et visualisation d'isoplans 3D et de leurs vues en coupe à l'aide de mayavi

introduction

** 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.


Contenu

(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.

Code (1) Tracer un plan d'égalité


"""
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.

résultat

スクリーンショット 2017-08-30 18.26.02.png

Code (2) Tracez une coupe transversale du plan d'équivalence

"""
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

Résultat (2): Vue en coupe du plan d'équivalence

スクリーンショット 2017-08-30 18.33.39.png


Addenda:

(1) Installation de mayavi en utilisant conda (voir [3])

Mon environnement machine: macOS Sierra 10.12.6 Démarrez le terminal et

  1. conda install -c menpo mayavi=4.5.0
  2. jupyter nbextension install --py mayavi --user
  3. conda install pyQT

Et dit.

(2) Lors de l'utilisation de macOS + Jupyter

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].


Les références

[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

Calcul scientifique / technique avec Python] Dessin et visualisation d'isoplans 3D et de leurs vues en coupe à l'aide de mayavi
[Calcul scientifique / technique par Python] Dessin de surface courbe 3D, surface, fil de fer, visualisation, matplotlib
[Calcul scientifique / technique par Python] Dessin, visualisation, matplotlib de lignes de contour 2D (couleur), etc.
[Calcul scientifique / technique par Python] Tracé, visualisation, matplotlib de données 2D lues à partir d'un fichier
[Calcul scientifique et technique par Python] Dessin de figures fractales [Triangle de Shelpinsky, fougère de Bernsley, arbre fractal]
[Calcul scientifique / technique par Python] histogramme, visualisation, matplotlib
[Calcul scientifique / technique par Python] Dessin d'animation de mouvement parabolique avec locus, matplotlib
[Calcul scientifique / technique par Python] Graphique logistique, visualisation, matplotlib
[Calcul scientifique / technique par Python] Graphique de coordonnées polaires, visualisation, matplotlib
[Calcul scientifique / technique par Python] Fonctionnement de base du tableau, numpy
[Calcul scientifique / technique par Python] Liste des utilisations des fonctions (spéciales) utilisées en physique en utilisant scipy
[Calcul scientifique / technique par Python] Vague "gémissement" et vitesse de groupe, superposition des vagues, visualisation, physique du lycée
[Calcul scientifique / technique par Python] Exemple de visualisation de champ vectoriel, champ magnétique électrostatique, matplotlib
[Calcul scientifique / technique par Python] Marche aléatoire 2D (problème de marche ivre), calcul numérique
[Calcul scientifique / technique par Python] Simulation de Monte Carlo par la méthode metropolis de la thermodynamique du système de spin ascendant 2D
[Calcul scientifique / technique par Python] Calcul de somme, calcul numérique
[Calcul scientifique / technique par Python] Ajustement par fonction non linéaire, équation d'état, scipy
[Calcul scientifique / technique par Python] Calcul du produit de la matrice par l'opérateur @, python3.5 ou supérieur, numpy
[Calcul scientifique / technique par Python] Dérivation de solutions analytiques pour équations quadratiques et cubiques, formules, sympy
[Calcul scientifique / technique par Python] Interpolation de Lagrange, calcul numérique
Calcul des indicateurs techniques par TA-Lib et pandas
[Calcul scientifique / technique par Python] Résolution de problèmes de valeurs propres (généralisés) en utilisant numpy / scipy, en utilisant des bibliothèques
[Calcul scientifique / technique par Python] Calcul numérique pour trouver la valeur de la dérivée (différentielle)
[Calcul scientifique / technique par Python] Solution analytique sympa pour résoudre des équations
[Calcul scientifique / technique par Python] Tracer, visualiser, matplotlib des données 2D avec barre d'erreur
Analyse des données financières par pandas et leur visualisation (2)
Analyse des données financières par pandas et leur visualisation (1)
[Calcul scientifique / technique par Python] Solution numérique d'équations d'ondes unidimensionnelles et bidimensionnelles par méthode FTCS (méthode explicite), équations aux dérivées partielles bi-courbes
[Calcul scientifique / technique par Python] Solution numérique d'une équation différentielle ordinaire du second ordre, problème de valeur initiale, calcul numérique
[Calcul scientifique / technique par Python] Liste des matrices qui apparaissent dans Hinpan en algèbre linéaire numérique
[Calcul scientifique / technique par Python] Solution numérique d'un problème d'oscillateur harmonique unidimensionnel par vitesse Méthode de Berle
[Calcul scientifique / technique par Python] Solution numérique du problème des valeurs propres de la matrice par multiplication de puissance, algèbre linéaire numérique
[Calcul scientifique / technique par Python] Interpolation spline de troisième ordre, scipy
[Calcul scientifique / technique par Python] Intégration Monte Carlo, calcul numérique, numpy
[Calcul scientifique / technique par Python] Intégration numérique, loi trapézoïdale / Simpson, calcul numérique, scipy
[Calcul scientifique / technique par Python] Transformation de Fourier à grande vitesse discrète en 3D unidimensionnelle, scipy
[Calcul scientifique / technique par Python] Solution numérique d'une équation de conduction thermique non stationnaire unidimensionnelle par méthode Crank-Nicholson (méthode implicite) et méthode FTCS (méthode de solution positive)
Clustering et visualisation à l'aide de Python et CytoScape
[Calcul scientifique / technique par Python] Résolution d'équations différentielles ordinaires, formules mathématiques, sympy
[Ingénierie de contrôle] Calcul des fonctions de transfert et des modèles d'espace d'états par Python
[Calcul scientifique / technique par Python] Résolution du problème de la valeur aux limites des équations différentielles ordinaires au format matriciel, calcul numérique
Exemple d'analyse de squelette tridimensionnelle par Python
Modèle de régression utilisant scikit-learn et sa visualisation
[Calcul scientifique / technique par Python] Résolution de l'équation différentielle ordinaire du second ordre par la méthode Numerov, calcul numérique
[Calcul scientifique / technique par Python] Résolution de l'équation de Newton unidimensionnelle par la méthode Runge-Kutta du 4ème ordre
[Calcul scientifique / technique par Python] Génération de nombres aléatoires non uniformes donnant une fonction de densité de probabilité donnée, simulation Monte Carlo