Comment tracer les flèches avec des données de coordonnées dans Matlab?
Je sais qu'il existe une fonction nommée annotation peut tracer des flèches ou des doubles flèches. Mais annotation ne peut parcelle normalisé de l'unité. Par exemple:
annotation('arrows',[x1 x2],[y1 y2])
Ici, [x1, x2] devrait être un taux inférieur à un.
Donc, ma question est comment puis-je tracer des flèches avec une vraie valeur plutôt qu'une valeur normalisée?
Je me demande si il n'y a aucune autre fonction ne peut approcher de ce ou n'importe quelle fonction je peux obtenir la valeur de l'axe de la figure afin que je puisse régler la vraie valeur en une valeur normalisée.
Vous devez vous connecter pour publier un commentaire.
Je viens de découvrir cette méthode, car je ne veux pas avoir à s'embêter avec des unités normalisées. Utiliser le latex interprète:
Pour faire de la flèche, de plus, utiliser un plus grand fontsize.
Pros
Contre
Pour le positionnement des annotations, Matlab offre la fonction
dsxy2figxy
convertir des données de points de l'espace normalisé coordonnées de l'espace. Cependant, pour quelques raisons que ce soit, la fonction n'est pas inclus dans le Matlab de distribution et doit être "créé" en premier.Copiez la ligne suivante dans la fenêtre de commande et l'exécuter pour ouvrir la fonction dans votre éditeur.
L'utilisation de la fonction
dsxy2figxy
l'enregistrer quelque part dans votre matlab chemin de recherche.Vous trouverez les instructions complètes pour la fonction
dsxy2figxy
à matlab-central: http://www.mathworks.de/help/techdoc/creating_plots/bquk5ia-1.htmladdpath(fullfile(docroot,'techdoc','creating_plots','examples'))
sera également mis à l'exemple de la fonction MATLAB votre chemin (en supposant que le fichier existe).Même si
annotation
utilisenormalized
que les unités par défaut, vous pouvez associer ces objets à l'actuel axes (gca
) et utiliser des unités de données pour la miseX
etY
propriétés.Voici un exemple de tracé d'une seule flèche.
Pour toute personne qui vient à travers cette rubrique qui cherchent à tirer des flèches dans "l'espace de données" plutôt que dans les unités par rapport à la figure et/ou des axes, je recommande fortement flèche.m à partir du fichier d'échange.
Si je me souviens bien, vous avez besoin de calculer la position de l'axe par rapport à la figure.
il devrait aller comme:
Note Fixe décalage dans le calcul initial - ap(3),ap(4) sont la largeur et la hauteur de la maladie de horton, pas de positions de coin
Après la création de l'objet de l'annotation, vous devez définir la propriété Unités à un absolu. Exemple:
annotation(..)
est nécessaire, et l'autre généralement utile le choix des unités est'pixels'
.'Position'
doit être défini après la mise en'Units'
, mais il peut être fait en une seule ligne:set(arrowObj, 'units', 'pixels', 'position', [100 100 200 400])
, dans ce cas également, la'units'
doit apparaître avant'position'
.Une approche pourrait être de définir une pointe de flèche dans les unités de l'axe:
Alors à pointe de flèche index sur une courbe vv, calculer
A fonctionné pour moi, pour mon cas particulier.
Vous pouvez utiliser la "flèche" dans le composant (bien documenté) DaVinci Tirage boîte à outils (divulgation complète: je l'ai écrit/vendre la boîte à outils, si les flèches sont gratuits).
Exemple de syntaxe et exemple de sortie sont ci-dessous.