Drew a circle for a specific point in my plot
Mostrar comentarios más antiguos
Hi,
My objective is how to draw a circle for the min(PRESS). I wrote the following code for an ellipse, but I had to adjust the Xcenter and Ycenter handly, but I would rather do this in a automatically form, because if i change the min(PRESS) for example for the first two entries, the values changes and the elipse dont circle the point i want.
load('PRESS')
[mincumpress,nPC_imp] = min(PRESS(2:end,:))
x_aux = [0:maxpcs]';
figure
plot(x_aux,PRESS,'-b','LineWidth',2);
hold on
plot(x_aux,PRESS,'.r','MarkerSize',15);
yl = ylim; ylim([yl(1) yl(2)]);
xcenter = nPC_imp / xl(2) + 0.035
ycenter = mincumpress * (yl(2) - yl(1)) - 0.08
dim = [xcenter ycenter .05 .05];
annotation('ellipse',dim,'Color','red')
hold on
xlabel('PC Number'); ylabel('PRESS');title('PCA-CV (ckf)');
Thanks for your time
6 comentarios
jonas
el 10 de Jul. de 2018
If you have the image processing toolbox, then for circles you could use
viscircles([Xcenter Ycenter],R)
instead of the annotation.
Tiago Dias
el 10 de Jul. de 2018
Editada: Tiago Dias
el 10 de Jul. de 2018
jonas
el 10 de Jul. de 2018
That's a practical workaround! :)
Tiago Dias
el 10 de Jul. de 2018
Tiago Dias
el 10 de Jul. de 2018
Yea that's correct. Any method where the radius is connected to the axes will give that result, unless the xticks and yticks are equal. Your solution is very practical as the center is connected to the axes while the radius is 'disconnected' from the axes.
Respuestas (1)
KSSV
el 10 de Jul. de 2018
Let C be the point, where you want to draw a circle.
N = 10 ;
x = 1:N ;
y = rand(N,1) ;
[val,idx] = max(y) ;
C = [x(idx) y(idx)] ;
plot(x,y) ;
hold on
R = 0.1 ; % Radius of circle
th = linspace(0,2*pi) ;
xc = C(1)+R*cos(th) ;
yc = C(2)+R*sin(th) ;
plot(xc,yc,'r') ;
axis equal
3 comentarios
Tiago Dias
el 10 de Jul. de 2018
KSSV
el 10 de Jul. de 2018
YOu can go for markers with circle i.e O and specify its size.
Tiago Dias
el 10 de Jul. de 2018
Categorías
Más información sobre Data Distribution Plots en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

