Je voudrais contrôler l'emplacement des clabels matplotlib sur un tracé de contour, mais sans utiliser le drapeau manuel = True dans clabel. Par exemple, je voudrais spécifier une coordonnée x, et avoir des étiquettes créées aux points qui traversent cette ligne. Je vois que vous pouvez obtenir l'emplacement des étiquettes individuelles en utilisant get_position(), mais je suis coincé à cela. Toute aide serait grandement appréciée. Merci!Matplotlib Contour Clabel Emplacement
Répondre
Non, il n'y a aucun moyen de le faire dans matplotlib. Vous êtes censé soit vivre avec les emplacements par défaut ou aller complètement interactif avec le manuel et en utilisant la souris. Vous voudrez peut-être classer cela comme un rapport de bogue en amont afin qu'ils puissent améliorer leurs algorithmes.
Il existe plusieurs options pour contourner ce problème. Le premier consiste à placer du texte par programme sur la figure de contour. Vous ne serez pas en mesure de supprimer de manière fiable les lignes sous le texte de cette façon. En supposant que vous avez un contour c
, vous pouvez trouver les lignes de contour dans c.collections
. Pour chaque ligne de contour, appelez get_paths
et placez votre texte sur ce chemin.
L'autre option serait de remplacer le code pour le placement manuel (en matplotlib.contour.BlockingContourLabeler
) ou de modifier le code qui trouve les positions d'étiquette (en matplotlib.contour.locate_label
), mais les deux fonctions sont assez denses. Si vous pouvez trouver un remplacement à travailler pour locate_label
remplacer simplement l'ancienne méthode dans votre traçage macro
def your_locate_label(self, linecontour, labelwidth):
# some magic
pass
ar = np.array([[1,0], [0,1]]
c = matplotlib.contour(ar)
c.locate_label = your_locate_label
c.clabel()
BTW, si vous utilisez ipython
, vous pouvez facilement voir la source de fonction de votre session interactive avec
%psource c.clabel
ou directement invoquer votre $EDITOR
sur le fichier ont été il est défini avec
%edit c.clabel
Oui, maintenant est un moyen de contrôler les emplacements des étiquettes! https://github.com/matplotlib/matplotlib/pull/642
plt.figure()
CS = plt.contour(X, Y, Z)
manual_locations = [(-1, -1.4), (-0.62, -0.7), (-2, 0.5), (1.7, 1.2), (2.0, 1.4), (2.4, 1.7)]
plt.clabel(CS, inline=1, fontsize=10, manual=manual_locations)
manuel peut être un objet itérable de x, y tuples. Les étiquettes de contour seront créées comme si vous cliquiez sur la souris à chaque position x, y. – Faber
Y a-t-il un moyen d'autoriser l'étiquetage automatisé, puis de faire défiler les étiquettes pour supprimer (et peut-être améliorer) tout ce qui recoupe les axes? –
- 1. Modification du texte de clabel dans Matplotlib
- 2. Mode interactif dans matplotlib
- 3. IE7 BUTTON contour blanc
- 4. Contour dans Cocos2d
- 5. Comment rendre un CLabel dans SWT désactivé (Windows)
- 6. Couleur matplotlib en traceur 3D à partir d'un jeu de données x, y, z sans utiliser de contour
- 7. Tracé de points de données à 3-uplets dans un tracé de surface/contour à l'aide de matplotlib
- 8. Comment formater des courbes de niveau à partir de Matplotlib
- 9. WPF - Contour d'un contrôle d'articles
- 10. Contour C#. accolades ou régions
- 11. .NET Open Source Contour Plotting
- 12. Boxplot carré Matplotlib
- 13. Cases de tirage Matplotlib
- 14. Matplotlib lignes courbes transparentes
- 15. Problèmes d'installation de Matplotlib
- 16. Grilles multiples sur matplotlib
- 17. Courir matplotlib dans tkinter
- 18. matplotlib pyplot colorbar question
- 19. matplotlib frontière largeur
- 20. Impossible d'importer matplotlib
- 21. étiquettes matplotlib matshow
- 22. fullscreen matplotlib figures
- 23. matplotlib pour l'utilisateur R?
- 24. toile Matplotlib dessin
- 25. Matplotlib: rotation d'un patch
- 26. Matplotlib image de garniture
- 27. Aide de légende Matplotlib
- 28. comment interpréter un contour de glyphe freetype lorsque le premier point du contour est hors courbe
- 29. Mettre à jour la forme du contour de la couleur du contour sur DragOver dans DSL
- 30. Obtenir le contour de l'ensemble des rectangles
Je ne trouve pas cette question affichée, donc je fait une nouvelle: https://github.com/matplotlib/matplotlib/issues/613 – keflavich