[PYTHON] Vous ne pouvez pas changer aspect_ratio avec sympy.plotting? À propos de l'affaire

Vous ne pouvez pas changer aspect_ratio avec sympy.plotting? À propos de l'affaire

~~ Je suis désolé si j'ai mal compris. ~~ Je n'avais pas assez de connaissances. Nous avons reçu un commentaire de @SaitoTsutomu et de résolu.

Démarrez jupyter notebook. Tout d'abord, la préparation.

from sympy.plotting import plot, plot_implicit, plot_parametric
from sympy import symbols, sin, cos, pi
x, y, t = symbols('x y t')

plot

plot(x**2, (x, -2, 2))

Ensuite, $ y = x ^ 2 $ dans la plage de $ -2 \ leqq x \ leqq 2 $ est dessiné.

Unknown.png

Il est également possible d'afficher des graphiques de plusieurs fonctions en même temps. Dessinez $ y = x ^ 2 $ et $ y = x $ dans le même espace de coordonnées.

plot(x**2, x, (x, -2, 2))

Unknown2.png

plot_implicit

Vous pouvez également dessiner une figure (fonction dite négative) sous la forme $ f (x, y) = 0 $. Vient ensuite $ x ^ 2 + y ^ 2-1 = 0 $, c'est-à-dire un cercle de rayon de $ 1 $ centré sur l'origine.

plot_implicit(x**2+y**2-1)

Unknown3.png

Je suis préoccupé par le rapport hauteur / largeur du rapport hauteur / largeur, mais c'est un cercle pour le moment. Il semble que plot_implicit ne puisse pas définir deux expressions ou plus et dessiner plusieurs courbes. La fonction implicite signifie-t-elle que le traçage est gênant?

plot_parametric

C'est mon préféré. Si $ y = f (x) , l'expression est limitée. Il s'agit donc d'une représentation de la figure représentée par l'affichage de la variable du médiateur. Par exemple $ x = \cos t,\ y = \sin t\quad (0\leqq t\leqq 2\pi) $$ Est aussi un cercle avec un rayon de 1 $ centré sur l'origine, mais pour tracer ceci:

plot_parametric(cos(t), sin(t), (t, 0, 2*pi))

Unknown-2.png

Vous pouvez dessiner plusieurs courbes en même temps.

plot_parametric((cos(t), sin(t)), (cos(t)+1, sin(t)+1), (t, 0, 2*pi))

Unknown-3.png

Il est également possible de régler individuellement la plage de paramètres.

plot_parametric((cos(t), sin(t), (t, 0, 2*pi)), (cos(t)+1, sin(t)+1, (t, 0, pi)))

Unknown-5.png

Au fait, je suis sûr que certains d'entre vous s'y intéressent depuis longtemps, mais vous pouvez voir une ellipse même si vous devriez tracer un cercle. Selon le Document officiel

aspect_ratio : tuple of two floats or {‘auto’}

Il y a, mais rien ne change même si cela est défini ...

plot_parametric((cos(t), sin(t)), (cos(t)+1, sin(t)+1), (t, 0, 2*pi), axis=False, aspect_ratio=(1, 1))

Unknown-4.png

Je peux confirmer que l'option ʻaxis est appliquée, mais ʻaspect_ratio ne répond pas. J'ai cherché sur Google, mais ce n'était qu'un site anglais, alors je l'ai parcouru pendant un moment, mais je n'ai pas pu obtenir de réponse claire.

En premier lieu, sympy plot semble médier matplotlib, alors changer de force le paramètre de matplotlib? Il y avait une réponse comme celle-ci, mais j'ai pensé qu'il valait mieux l'illustrer avec matplotlib depuis le début si je voulais le faire.

** kwargs ...

C'est mon opinion d'un amateur qui n'est ni programmeur ni rien, mais même si j'insère un mot-clé que je ne m'attendais pas à être ** kwargs, aucune erreur particulière ne se produit. Je pense que c'est une spécification assez dangereuse ... J'ai pensé aux fautes d'orthographe dans ʻaspect_ratio, mais je n'ai pas dit oui ou non, donc je n'étais même pas sûr d'être au courant de l'option ʻaspect_ratio.

Solution

La taille de l'écran est différente de aspect_ratio.

from sympy.plotting import plot_parametric
from sympy import symbols, sin, cos, pi
t = symbols('t')

import matplotlib.pyplot as plt
plt.rcParams['figure.figsize'] = (8,8)

plot_parametric(cos(t), sin(t), (t, 0, 2*pi))

Unknown6.png

Il a été affiché en toute sécurité à 1 $: 1 $. Merci, @SaitoTsutomu.

Recommended Posts

Vous ne pouvez pas changer aspect_ratio avec sympy.plotting? À propos de l'affaire
Pensez au problème de changement minimum
Je ne peux pas installer le package avec pip.
À propos de localhost: 4040 n'est pas accessible après l'exécution de Spark avec Docker
À propos de la question qui s'inquiétait de l'erreur d'échantillonnage
À propos du test
Remarques sur avec
À propos de la file d'attente
Modifier le fuseau horaire dans Oracle Database Docker
Extraire la valeur maximale avec les pandas et modifier cette valeur