Traçage de la distance de flèches en dessin technique
Je veux indiquer une distance dans l'une de mes parcelles. Ce que j'ai à l'esprit est la façon de le faire dans les dessins techniques, montrant une double flèche avec la distance de texte à côté d'elle.
Exemple:
from matplotlib.pyplot import *
hlines(7,0,2, linestyles='dashed')
hlines(11,0,2, linestyles='dashed')
hlines(10,0,2, linestyles='dashed')
hlines(8,0,2, linestyles='dashed')
plot((1,1),(8,10), 'k',) # arrow line
plot((1,1),(8,8), 'k', marker='v',) # lower arrowhead
plot((1,1),(10,10), 'k', marker='^',) # upper arrowhead
text(1.1,9,"D=1")
Cela se traduit par quelque chose comme ceci (deux de la hlines ne sont pas vraiment nécessaires, ils se contentent d'augmenter la zone de dessin...):
Est-il un moyen plus rapide pour ce faire, de préférence, avec des pointes de flèche qui fin sur l'endroit exact, pas au-dessous de/au-dessus de l'endroit où ils devraient être?
Des points supplémentaires pour le placement du texte automatiquement.
Edit:
J'avais joué avec annotate
mais depuis la chaîne devrait être sacrifié de cette solution avait perdu quelque attrait pour moi. Merci pour le arrowstyle cependant, il ne fonctionnait pas quand j'ai tenté quelque chose de similaire.
Je suppose qu'il n'y a pas moyen de contourner l'écriture d'un peu de fonction pour faire avec un seul appel...
Vous devez vous connecter pour publier un commentaire.
rendements
Pour plus d'informations sur les nombreuses options disponibles avec
plt.annotate
, voir cette page.Comme indiqué ci-dessus, le texte peut être placé soit avec
plt.annotate
ouplt.text
. Avecplt.annotate
vous pouvez spécifier le décalage (par exemple(5, 0)
) dans les points, alors qu'avecplt.text
vous pouvez spécifier l'emplacement du texte dans les données de coordonnées (par exemple,(1.01, 9)
).annotate
trop.offset points
est plus utile car il permettra d'éviter l'étiquette de dérive/étirement à l'écart de la flèche si la figure est élargi.arrowstyle
vous obtenez unFancyArrowPatch
qui offre un choix à partir d'un ensemble fixe de styles qui ne permettent pas de personnalisation de la flèche, autant que je sache. Toutefois, si vous supprimezarrowstyle='<->'
, alors vous obtenez unYAArrow
qui permet de définir leswidth
,frac
,headwidth
arrowprops clés/valeurs.{'shrinkA':0, 'shrinkB':0}
àarrowprops
. Cela supprime la valeur par défaut de 2 points utilisé pour réduire les flèches.Essayez d'utiliser
annotate
:Je ne suis pas sûr de texte automatique placement si.
J'ai créé une fonction qui effectue ce bien: