Visualisez le point P qui fonctionne avec Python

Ce que j'ai fait

J'ai dessiné un point P qui fonctionne avec Python et l'ai affiché sous forme de gif.

ugokutenP02.gif

exemple

Visualisons le problème du déplacement du point P comme suit.

Il existe un ABCD rectangulaire avec AB = 4cm, BC = 6cm, et le point P part de A et procède de A → B → C → D à 1cm par seconde. Soit l'aire de △ APD après $ x $ secondes du départ soit $ y $ cm 2 </ sup>.

La source https://math.005net.com/yoten/doten.php (Cependant, 2 cm par seconde équivaut à 1 cm par seconde.)

dessin

environnement

1.Faites une figure vide

Tout d'abord, préparez-vous à dessiner la figure.

import matplotlib.pyplot as plt

fig = plt.figure()
ax1 = fig.add_subplot(111)

plt.show()

image.png

2. Afficher un rectangle

Faites un rectangle de 4 cm de long et 6 cm de large. Ici, il existe différentes manières de choisir où placer l'origine des coordonnées $ O $. Cette fois, sélectionnez le centre de gravité du rectangle (2 cm de longueur et 3 cm de largeur) comme origine $ O $, et déterminez les coordonnées des points A, B, C et D. Cela facilitera le code si vous souhaitez plus tard que l'étiquette apparaisse un tour à l'extérieur du rectangle. 1576855216649.jpg


import numpy as np #ajouter à
import matplotlib.pyplot as plt
import matplotlib.patches as pat #ajouter à

fig = plt.figure()

ax1 = fig.add_subplot(111)

ax1.set_xlim(-4,4)
ax1.set_ylim(-3,3)

A=np.array([-3,2])
B=np.array([-3,-2])
C=np.array([3,-2])
D=np.array([3,2])

p = pat.Polygon(xy = [A,B,C,D],
                edgecolor='black',
                facecolor='white',
                linewidth=1.6)

ax1.add_patch(p)

plt.show()

image.png

3. Afficher la longueur du côté et le nom du sommet

Dessinez la longueur du côté text peut dessiner des caractères en spécifiant la coordonnée x dans le premier argument, la coordonnée y dans le deuxième argument et le nom dans le troisième argument.

#Afficher la longueur du côté
ax1.text(-3.5,0.0,"4cm",horizontalalignment='center',verticalalignment='center')
ax1.text(0.0,-2.5,"6cm",horizontalalignment='center',verticalalignment='center')

Ajustez le placement à votre guise.

Ensuite, le nom du point est affiché à l'extérieur du rectangle. Vous pouvez décider à la main de la position d'affichage ainsi que de la longueur du côté.

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

fig = plt.figure()
ax1 = fig.add_subplot(111)

ax1.set_xlim(-4,4)
ax1.set_ylim(-3,3)

A=np.array([-3,2])
B=np.array([-3,-2])
C=np.array([3,-2])
D=np.array([3,2])

pol = pat.Polygon(xy = [A,B,C,D],
                edgecolor='black',
                facecolor='white',
                linewidth=1.6)

ax1.add_patch(pol)

#Afficher la longueur du côté
ax1.text(-3.5,0.0,"4cm",horizontalalignment='center',verticalalignment='center')
ax1.text(0.0,-2.5,"6cm",horizontalalignment='center',verticalalignment='center')

#Afficher le nom du sommet
scale=1.1
ax1.text(A[0]*scale,A[1]*scale,"A",fontsize=15,horizontalalignment='center',verticalalignment='center')
ax1.text(B[0]*scale,B[1]*scale,"B",fontsize=15,horizontalalignment='center',verticalalignment='center')
ax1.text(C[0]*scale,C[1]*scale,"C",fontsize=15,horizontalalignment='center',verticalalignment='center')
ax1.text(D[0]*scale,D[1]*scale,"D",fontsize=15,horizontalalignment='center',verticalalignment='center')

plt.show()

image.png

4. Affichage du point P

Le rôle principal est enfin là. Définissez les coordonnées du point P et affichez les points avec ʻax1.plot () `. La façon d'afficher le nom du point P est la même que celle des points A, B, C et D.

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

fig = plt.figure()

ax1 = fig.add_subplot(111)

ax1.set_xlim(-4,4)
ax1.set_ylim(-3,3)

A=np.array([-3,2])
B=np.array([-3,-2])
C=np.array([3,-2])
D=np.array([3,2])

pol = pat.Polygon(xy = [A,B,C,D],
                edgecolor='black',
                facecolor='white',
                linewidth=1.6)

ax1.add_patch(pol)

ax1.text(-3.5,0.0,"4cm",horizontalalignment='center',verticalalignment='center')
ax1.text(0.0,-2.5,"6cm",horizontalalignment='center',verticalalignment='center')

scale=1.1
ax1.text(A[0]*scale,A[1]*scale,"A",fontsize=15,horizontalalignment='center',verticalalignment='center')
ax1.text(B[0]*scale,B[1]*scale,"B",fontsize=15,horizontalalignment='center',verticalalignment='center')
ax1.text(C[0]*scale,C[1]*scale,"C",fontsize=15,horizontalalignment='center',verticalalignment='center')
ax1.text(D[0]*scale,D[1]*scale,"D",fontsize=15,horizontalalignment='center',verticalalignment='center')

P=np.array([-3.0,1.0])

#Afficher le point mobile P
scale_P=1.2
ax1.plot(P[0],P[1],marker='o',color='black')
ax1.text(P[0]*scale_P,P[1]*scale_P,"P",fontsize=15,horizontalalignment='center',verticalalignment='center')

plt.show()

5. Afficher △ APD

Créez un APD triangulaire et ajoutez-le au diagramme de la même manière que lorsque vous avez créé l'ABCD rectangulaire, puis effacez les axes x et y.

%matplotlib nbagg
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as pat

fig = plt.figure()

ax1 = fig.add_subplot(111)

ax1.set_xlim(-4,4)
ax1.set_ylim(-3,3)

A=np.array([-3,2])
B=np.array([-3,-2])
C=np.array([3,-2])
D=np.array([3,2])

pol = pat.Polygon(xy = [A,B,C,D],
                edgecolor='black',
                facecolor='white',
                linewidth=1.6)

ax1.add_patch(pol)

ax1.text(-3.5,0.0,"4cm",horizontalalignment='center',verticalalignment='center')
ax1.text(0.0,-2.5,"6cm",horizontalalignment='center',verticalalignment='center')

scale=1.1
ax1.text(A[0]*scale,A[1]*scale,"A",fontsize=15,horizontalalignment='center',verticalalignment='center')
ax1.text(B[0]*scale,B[1]*scale,"B",fontsize=15,horizontalalignment='center',verticalalignment='center')
ax1.text(C[0]*scale,C[1]*scale,"C",fontsize=15,horizontalalignment='center',verticalalignment='center')
ax1.text(D[0]*scale,D[1]*scale,"D",fontsize=15,horizontalalignment='center',verticalalignment='center')

P=np.array([-3.0,1.0])

scale_P=1.2
ax1.plot(P[0],P[1],marker='o',color='black')
ax1.text(P[0]*scale_P,P[1]*scale_P,"P",fontsize=15,horizontalalignment='center',verticalalignment='center')

#△ Ajout d'APD
S = pat.Polygon(xy = [A,P,D],
                    edgecolor='black',
                    facecolor='lightgray',
                    linewidth=1.6)

ax1.add_patch(S)

#Effacer le cadre
plt.axis('off')

plt.show()

6. Déplacer

Déplacez le point mobile P et exportez-le sous forme d'animation au format gif. Une animation est créée en mettant à jour les coordonnées du point mobile P après $ x $ secondes à chaque fois et en dessinant image par image.

%matplotlib nbagg #Requis pour afficher l'animation sur le notebook Jupyter
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as pat
from matplotlib.animation import PillowWriter,FuncAnimation #Ajouté pour la création vidéo

fig = plt.figure()
ax1 = fig.add_subplot(111)

A=np.array([-3,2])
B=np.array([-3,-2])
C=np.array([3,-2])
D=np.array([3,2])

scale=1.1
scaleP=1.2

p = pat.Polygon(xy = [A,B,C,D],
                edgecolor='black',
                facecolor='white',
                linewidth=1.6)

def initialize():
    ax1.set_xlim(-4,4)
    ax1.set_ylim(-3,3)
    ax1.add_patch(p)


    ax1.text(A[0]*scale,A[1]*scale,"A",fontsize=15,horizontalalignment='center',verticalalignment='center')
    ax1.text(B[0]*scale,B[1]*scale,"B",fontsize=15,horizontalalignment='center',verticalalignment='center')
    ax1.text(C[0]*scale,C[1]*scale,"C",fontsize=15,horizontalalignment='center',verticalalignment='center')
    ax1.text(D[0]*scale,D[1]*scale,"D",fontsize=15,horizontalalignment='center',verticalalignment='center')

    ax1.text(-3.5,0.0,"4cm",horizontalalignment='center',verticalalignment='center')
    ax1.text(0.0,-2.5,"6cm",horizontalalignment='center',verticalalignment='center')

   
def moveP(x):
    if 0<= x <4:
        return A+np.array([0,-1])*x*velocity
    elif 4<=x <10:
        return B+np.array([1,0])*(x-4)*velocity
    elif 10<= x <14:
        return C+np.array([0,1])*(x-10)*velocity
    else:
        return D
        
velocity=1.0
timestep=0.1

def animate(t):
    plt.cla()
    initialize()
    
    x=timestep*t
    P=moveP(x)
    
    ax1.plot(P[0],P[1],marker='o',color='black')
    ax1.text(P[0]*scaleP,P[1]*scaleP,"P",fontsize=15,horizontalalignment='center',verticalalignment='center')
    
    S = pat.Polygon(xy = [A,P,D],
                    edgecolor='black',
                    facecolor='lightgray',
                    linewidth=1.6)

    ax1.add_patch(S)
    
    plt.axis('off')
    plt.title('x=' + '{:.1f}'.format(x)+'sec')
    
anim = FuncAnimation(fig,animate,frames=140,repeat=True,interval=timestep*1000)
#anim.save("ugokutenP.gif", writer='pillow',fps=10)
plt.show()

ugokutenP02.gif

Recommended Posts

Visualisez le point P qui fonctionne avec Python
Fonctionne avec Python et R
Visualisez les dépendances des packages python avec graphviz
[Python] Un programme qui crée des escaliers avec #
Un monde typé qui commence par Python
[Python] Visualisez et identifiez les pièces lentes avec pytest
FizzBuzz en Python3
Grattage avec Python
Statistiques avec python
Créez une application qui devine les étudiants avec Python
Grattage avec Python
Twilio avec Python
Créer une page qui se charge indéfiniment avec python
Intégrer avec Python
Jouez avec 2016-Python
AES256 avec python
python commence par ()
Folium: Visualisez les données sur une carte avec Python
Bingo avec python
Zundokokiyoshi avec python
Une doublure qui produit 10000 chiffres de rapport de circonférence avec Python
Exemple de programme qui génère un syslog avec la journalisation Python
Formules qui apparaissent dans Faire des mathématiques avec Python
Visualiser grib2 sur une carte avec python (matplotlib)
Excel avec Python
Micro-ordinateur avec Python
Cast avec python
Manipulation de chaînes avec python et pandas que j'utilise souvent
[Python] Construction de l'environnement OpenCV avec Docker (cv2.imshow () fonctionne également)
Visualisez la gamme d'insertions internes et externes avec python
Analyser et visualiser JSON (application Web ⑤ avec Python + Flask)
Notes sur les connaissances Python utilisables avec AtCoder
Le point addictif du "raisonnement de Bayes expérimenté en Python"
Un serveur qui fait écho aux données POSTées avec flask / python
Un mémo que j'ai touché au magasin de données avec python
Visualisez le statut d'appréciation des œuvres d'art avec OpenCV
Articles permettant le développement de systèmes avec Django (Python) _Introduction
Communication série avec Python
Django 1.11 a démarré avec Python3.6
Jugement des nombres premiers avec Python
Python avec eclipse + PyDev.
Communication de socket avec Python
Analyse de données avec python 2
Grattage en Python (préparation)
Essayez de gratter avec Python.
Visualisez rapidement avec les pandas
Apprendre Python avec ChemTHEATER 03
"Orienté objet" appris avec python
Exécutez Python avec VBA
Manipuler yaml avec python
Résolvez AtCoder 167 avec python
Communication série avec python
[Python] Utiliser JSON avec Python
Apprendre Python avec ChemTHEATER 05-1
Apprenez Python avec ChemTHEATER
Exécutez prepDE.py avec python3
1.1 Premiers pas avec Python
Collecter des tweets avec Python
Binarisation avec OpenCV / Python
3. 3. Programmation IA avec Python