7
votes

Montrer la valeur finale de l'axe Y de chaque ligne avec Matplotlib

Je dessine un graphique avec certaines lignes à l'aide de Matplotlib et je souhaite afficher la valeur finale y à côté de l'endroit où chaque ligne se termine sur le côté droit comme ceci: Entrez la description de l'image ici

Des solutions ou des pointeurs vers les parties pertinentes de l'API? Je suis assez complètement excentré.

J'utilise MATPLOTLIB 1.0.0 et l'interface PYPLOT, par ex. pyplot.plot (xs, ys, f, xs_, ys_, f _) .


1 commentaires

Merci pour la modification de l'image-image!


3 Réponses :


8
votes

2 commentaires

La première option fait le travail (surtout, voir mon commentaire ci-dessus) mais j'aime vraiment le second! Doivent mettre en place le même formateur d'axe à la main, mais ce n'est pas un problème. Merci!


Cependant, il a une difficulté lorsque l'axe Y est en train de braquer. Les chiffres sont dessinés comme si le nouvel axe n'est pas. Si le deuxième axe Y est réglé sur la balance de la balade, les chiffres ne sont pas dessinés.



26
votes

Bien qu'il n'y ait rien de mal à la réponse de Ofri, Annotate est destiné à cette fin: xxx

 Entrez la description de l'image ici

Ceci place le texte 8 points à droite du côté droit de l'axe, à la valeur y maximum pour chaque parcelle. Vous pouvez également ajouter des flèches, etc. voir http://matplotlib.sourceforge.net/user/annotations_guide .html (vous pouvez également modifier l'alignement vertical, si vous souhaitez le texte verticalement centré sur la valeur Y donnée. Spécifiez simplement VA = 'CENTER' .) < p> En outre, cela ne repose pas sur les emplacements des tiques, il fonctionnera donc parfaitement pour les parcelles de bûches, etc., donnant l'emplacement du texte en termes de positions des limites des axes et de son décalage en points présente de nombreux avantages si Vous commencez à réparer la parcelle, etc.


0 commentaires

3
votes

Joe très utile. Seulement un détail. Si la valeur finale n'est pas un MaxImun, vous pouvez utiliser Y [-1]. J'ai ajouté une ligne horizontale pour clarifier.

gbm = np.log(np.cumsum(np.random.randn(10000))+10000)
plt.plot(gbm)
plt.annotate('%0.2f' % gbm[-1], xy=(1, gbm[-1]), xytext=(8, 0), 
             xycoords=('axes fraction', 'data'), textcoords='offset points')
plt.axhline(y=gbm[-1], color='y', linestyle='-.')
plt.show()


1 commentaires

Comment attribuer une valeur par groupes dans le cadre de données?