How to make a circle MarkerSize on a plot equal to a specific diameter relative to the scale being used
5 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I have a question about using MarkerSize for 'Marker' = 'o' using the plot function
MarkerSize is given in points. I would like to set the diameter of the Marker 'o'
Is there a conversion to obtain a numerical value given by the scale you're using.
For example, on a degrees plot: plot(A, B, 'Marker', 'o', 'MarkerSize', .75)
where A and B are in degrees.
I would like the diameter to equal .75 degrees. Thanks for your help !
0 commentaires
Réponse acceptée
Walter Roberson
le 31 Août 2011
It could be done in theory, through a multistep process involving finding the plotting area of the axes in units in points, and relating that to the xlim or ylim to determine the proper ratio.
Finding the actual plotting area inside the box limits is tricky in my experience; I'm not sure I have ever managed to do it.
This is a case where scatter() does not help; I generally turn to scatter() when point plotting via plot() is not sufficiently flexible, but scatter() uses points for its marker size as well.
Hmmm... you could probably rectangle() circles in places at the appropriate locations (the rectangle() routine can draw circles.)
0 commentaires
Plus de réponses (1)
Nando Trindade
le 1 Sep 2011
1 commentaire
Walter Roberson
le 1 Sep 2011
arrayfun() the loop for simplicity. Something like,
w = 1.5;
arrayfun(@(x,y) rectangle('Position', [x-w/2, y-w/2, w, w], 'Curvature', [1 1], 'EdgeColor', 'r', 'FaceColor', 'r'), X, Y);
Different sizes for each would be a small modification:
arrayfun(@(x,y,w) rectangle('Position', [x-w/2, y-w/2, w, w], 'Curvature', [1 1], 'EdgeColor', 'r', 'FaceColor', 'r'), X, Y, W);
Voir également
Catégories
En savoir plus sur Scatter Plots dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!