Drew a circle for a specific point in my plot
이전 댓글 표시
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
jonas
2018년 7월 10일
If you have the image processing toolbox, then for circles you could use
viscircles([Xcenter Ycenter],R)
instead of the annotation.
Tiago Dias
2018년 7월 10일
편집: Tiago Dias
2018년 7월 10일
jonas
2018년 7월 10일
That's a practical workaround! :)
Tiago Dias
2018년 7월 10일
Tiago Dias
2018년 7월 10일
답변 (1개)
KSSV
2018년 7월 10일
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
Tiago Dias
2018년 7월 10일
KSSV
2018년 7월 10일
YOu can go for markers with circle i.e O and specify its size.
Tiago Dias
2018년 7월 10일
카테고리
도움말 센터 및 File Exchange에서 Data Distribution Plots에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

