How to make a circle MarkerSize on a plot equal to a specific diameter relative to the scale being used
11 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Akzeptierte Antwort
Walter Roberson
am 31 Aug. 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 Kommentare
Weitere Antworten (1)
Nando Trindade
am 1 Sep. 2011
1 Kommentar
Walter Roberson
am 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);
Siehe auch
Kategorien
Mehr zu Scatter Plots finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!