How to make a circle MarkerSize on a plot equal to a specific diameter relative to the scale being used
5 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
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 comentarios
Respuesta aceptada
Walter Roberson
el 31 de Ag. de 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 comentarios
Más respuestas (1)
Nando Trindade
el 1 de Sept. de 2011
1 comentario
Walter Roberson
el 1 de Sept. de 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);
Ver también
Categorías
Más información sobre Scatter Plots en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!