Dessiner des lignes de contour qui apparaissent dans les manuels (Python)

Cet article est une suite de Dessin de lignes de contour dans les manuels (Fortan + gnuplot).

introduction

L'auteur étudie la dynamique des fluides apprise au département d'ingénierie de l'université, mais au début de la dynamique des fluides (théorie des fluides complète), des grandeurs physiques telles que le potentiel de vitesse $ \ phi $ et la fonction d'écoulement $ \ psi $ apparaissent, et ces quantités Il existe quelques exemples de flux typiques utilisant (double face 87% BA% E3% 81% 97) etc.). Les courbes de niveau bidimensionnelles de ces quantités sont représentées sous forme de figures dans le manuel, mais j'ai le sentiment que si je peux les dessiner moi-même, ma compréhension s'approfondira. Cependant, il est souvent difficile de tracer des courbes de niveau d'une certaine quantité physique sur une surface bidimensionnelle avec un service logiciel de graphe qui peut facilement dessiner la fonction $ y = f (x) $. Dans l'article précédent, j'ai essayé de dessiner avec Fortran + gnuplot, mais j'aimerais l'essayer avec un langage de programmation populaire, donc cette fois je vais dessiner des courbes de niveau en utilisant Python.

Préparation: installer Python et les modules requis

Puisque Python est multi-plateforme, installez-le en fonction de chaque environnement. Il existe différentes façons d'installer Python, veuillez donc le vérifier vous-même et choisir celui qui vous convient. Pour ceux qui éprouvent des difficultés à installer ou ne souhaitent pas installer divers éléments sur leur PC, nous vous recommandons d'utiliser Google Colaboratory.

En plus de Python lui-même, numpy et matplotlib sont nécessaires en tant que modules. Si vous souhaitez utiliser Python, etc. qui est à l'origine inclus dans le système d'exploitation, installez-le en plus.

Champ de flux cible

L'article précédent est destiné à la même éruption / aspiration. En supposant que la distance à l'origine est $ r $, le potentiel de vitesse $ \ phi $ en trois dimensions peut être exprimé comme suit. $ \phi = -\frac{m}{r},\, r = \sqrt{x^2+y^2+z^2} \tag{1} $ Ici, $ m $ est un coefficient appelé la force de l'éruption. Je veux dessiner des courbes de niveau en deux dimensions, alors définissez $ z = 0 $ $ \phi = -\frac{m}{r},\, r = \sqrt{x^2+y^2} \tag{2} $ Essayez de dessiner.

Politique de travail

Le module matplotlib de Python peut dessiner différents types de dessins, de sorte que le travail ne peut être résolu qu'avec Python.

  1. Créez des points de grille bidimensionnels (carrés également espacés) avec la fonction de numpy, et calculez la valeur de $ \ phi (= \ phi_ {i, j}) $ à chaque point de grille.
  2. Dessinez des courbes de niveau avec la fonction de matplotlib.

Créez un script Python dans le flux. Puisque nous ne faisons pas de choses avancées, nous ne considérons pas l'orientation objet.

grid.png

Script Python

Un exemple de script est présenté ci-dessous.

contour.py

import matplotlib
import numpy as np
import matplotlib.pyplot as plt

xmin = -10.0
xmax =  10.0
ymin = -10.0
ymax =  10.0
delta = 0.1
x = np.arange(xmin,xmax,delta)
y = np.arange(xmin,xmax,delta)

m = 1.0
X, Y = np.meshgrid(x,y)
r = np.sqrt(X**2 + Y**2)
Z = -m/r

fig, ax = plt.subplots(figsize=(6,6))
levels = np.arange(-1.0,0.0,0.2)
cont = ax.contour(X,Y,Z,levels)
cont.clabel(fmt='%1.1f', fontsize=12)
plt.show()

Tout d'abord, les valeurs de coordonnées sont placées dans $ x $ et $ y $, et $ X $ et $ Y $ sont convertis en points de grille. Il existe deux façons de dessiner un graphique dans matplotlib, mais la méthode utilisant l'objet Artist est utilisée. C'est l'un des avantages de matplotlib que vous pouvez mettre des nombres dans les courbes de niveau, alors je les mets.

Le script ci-dessus est exécuté sur le terminal comme suit, et le diagramme de contour apparaît dans une fenêtre séparée.

python contour.py

c2.png

Si vous voulez enregistrer l'image, cliquez sur le bouton Enregistrer dans cette fenêtre de dessin pour l'enregistrer, ou changez le plot.show () à la fin du script comme suit.

plt.savefig('c2.png')

Résumé

J'ai présenté comment dessiner facilement des lignes de contour en utilisant la fonction de matplotlib de Python. Cette fois, seuls les paramètres minimums nécessaires pour matplotlib sont définis, mais comme matplotlib peut être défini en détail à chaque coin du graphique, il est possible de dessiner correctement et proprement la figure dans le manuel si vous êtes particulier à ce sujet. ..

Recommended Posts

Dessiner des lignes de contour qui apparaissent dans les manuels (Python)
Dessiner un graphique avec python
Formules qui apparaissent dans Faire des mathématiques avec Python
Dessiner une forme d'onde mp3 en Python
Dessinez le disque de Poancare en Python
Dessiner "Dessiner une fougère par programme" en Python
Dessiner la fonction Yin en python
Segfo python en 2 lignes
Dessinez un cœur en Python
Installation de Python en 2 lignes @Windows
Dessinez des ondes sinusoïdales avec Blender Python
Dessinez des nœuds de manière interactive avec Plotly (Python)
Dessinez une matrice de diagramme de dispersion avec python
Segfo python en trois lignes
Dessinez un diagramme CNN en Python
Graphique à lignes pliées et ligne d'échelle en python
Dessinez Nozomi Sasaki dans Excel avec python
Dessiner un cœur avec Python Partie 2 (SymPy Edition)
Dessinez une structure arborescente en Python 3 à l'aide de graphviz
Une doublure qui produit quatre-vingt-dix-neuf en Python
Dessiner un graphique d'une fonction quadratique en Python
Un mémo que j'ai écrit un tri rapide en Python
Lire un fichier contenant des lignes brouillées en Python
Créer un environnement qui utilise Python avec Eclipse
Un programme qui supprime les instructions en double en Python
Vérification de type statique qui démarre vaguement en Python
Dessinez des graphiques dans Julia ... Laissez les graphiques à Python
Méthodes de test qui renvoient des valeurs aléatoires en Python
[Python] Comment dessiner un histogramme avec Matplotlib
Celui qui affiche la barre de progression en Python
Quadtree en Python --2
Python en optimisation
CURL en Python
Métaprogrammation avec Python
Python 3.3 avec Anaconda
Géocodage en python
SendKeys en Python
Méta-analyse en Python
Unittest en Python
Époque en Python
Discord en Python
Allemand en Python
DCI en Python
tri rapide en python
nCr en python
N-Gram en Python
Programmation avec Python
[Introduction à Python] Résumé des fonctions et méthodes qui apparaissent fréquemment en Python [Format du problème]
Plink en Python
Constante en Python
FizzBuzz en Python
Sqlite en Python
Étape AIC en Python
LINE-Bot [0] en Python
CSV en Python
Assemblage inversé avec Python
Réflexion en Python
Constante en Python
nCr en Python.