2013-05-03 8 views
5

essentiellement je veux représenter deux fonctionsTraçage deux fonctions en même temps matplotlib

g1 = x*cos(x*pi) 
g2 = 1 - 0.6x^2 

puis tracer l'intersection, je dispose déjà d'un module qui prend des entrées à proximité des deux intersections de lignes, puis converge vers ces points (il y en a quatre)

mais je veux tracer ces deux fonctions et leurs intersections en utilisant matplotlib mais je n'ai aucune idée de comment. J'ai seulement représenté les fonctions de base. Toute aide est grandement appréciée

+0

Si vous avez déjà une routine qui trouve l'intersection, pourquoi ne pas simplement tracer ces points? –

Répondre

12

En supposant que vous pouvez obtenir jusqu'à tracer une fonction, avec x et g1 sous forme de tableaux numpy,

pylab.plot(x,g1) 

simplement appeler complot nouveau (et encore) de tirer un certain nombre de courbes séparées :

pylab.plot(x,g2) 

enfin afficher ou enregistrer dans un fichier:

pylab.show() 

T o indiquer un point spécial tel qu'une intersection, passer juste en scalaires pour x, y et demander un marqueur tel que 'x' ou 'o' ou tout ce que vous voulez.

pylab.plot(x_intersect, y_intersect, 'x', color="#80C0FF") 

Sinon, je marque souvent une place le long x avec un segment vertical en traçant un ensemble de données peu à deux points rapides:

pylab.plot([x_special, x_special], [0.5, 1.9], '-b') 

je hardcode les valeurs y pour bien paraître sur un tracer pour mon projet actuel, mais évidemment ce n'est pas réutilisable pour d'autres projets. Notez que plot() peut prendre des listes python ordinaires; pas besoin de convertir en tableaux numpy.

Si vous ne pouvez pas aller aussi loin que le tracé d'une fonction (juste g1) alors vous avez besoin d'un tutoriel de base dans matplot lib, qui ne ferait pas une bonne réponse ici, veuillez visiter http://matplotlib.org/ et google "matplotlib tutorial" ou "introduction de matplotlib".

+0

merci beaucoup pour toutes les informations! – MITjanitor

+1

Si vous voulez tracer des lignes sur l'ensemble de la parcelle, utilisez 'ax.axhline' et' ax.axvline'. – tacaswell