Zooming a portion of figure in a figure

9 Ansichten (letzte 30 Tage)
Marie Pettersen
Marie Pettersen am 25 Okt. 2019
Kommentiert: Marie Pettersen am 25 Okt. 2019
Hi, i want to zoom in on a portion of this figure. It is a plot of eigenvalues, and I want to show a zoomed figure of the eigenvalues close to real axis equal zero. As you can see I have tried my best at the end, but it doesn't work. Can anyone help?
close all
L = 0.01;
R = 0.1;
K_i = 800;
K_p = [0.8, 1.2, 2, 4, 10, 40, 100];
figure;
for i=1:length(K_p)
A = [0 -K_i ; 1/L -(R+K_p(i))/L];
z = eig(A);
a = real(z);
b = imag(z);
txt = ['Kp = ', num2str(K_p(i))];
plot(a, b, 'o', 'DisplayName',txt)
hold on
legendnames(i) = K_p(i);
end
hold off
grid on
legend('Location','northwest')
legend show
xlabel('Real axis'),ylabel('Imaginary axis')
xlim([-10500 100])
ylim([-300 300])
axes('position', [0.2 0.2 0.25 0.25])
box on
your_index = -1000 < a & 100 > a;
plot(a(your_index), b(your_index));
axis tight

Akzeptierte Antwort

Daniel M
Daniel M am 25 Okt. 2019
Bearbeitet: Daniel M am 25 Okt. 2019
I just made some minor adjustments
close all
L = 0.01;
R = 0.1;
K_i = 800;
K_p = [0.8, 1.2, 2, 4, 10, 40, 100];
figure('Position',[52 237 890 659]);
for i=1:length(K_p)
A = [0 -K_i ; 1/L -(R+K_p(i))/L];
z = eig(A);
a = real(z);
b = imag(z);
txt = ['Kp = ', num2str(K_p(i))];
plot(a, b, 'o', 'DisplayName',txt)
hold on
legendnames(i) = K_p(i);
end
g = get(gca);
pt = 7;
colorOfPoint = g.ColorOrder(pt,:);
% this get the color of the point "pt"
hold off
grid on
legend('Location','northwest')
legend show
xlabel('Real axis'),ylabel('Imaginary axis')
xlim([-10500 100])
ylim([-300 300])
axes('position', [0.2 0.2 0.25 0.25])
box on
your_index = -1000 < a & 100 > a;
plot(a(your_index), b(your_index),'o','MarkerSize',10,'Color',colorOfPoint);
axis tight
grid on
ann1 = annotation('textbox', 'Units','pixels',...
'Position',[198 109 203 76], ...
'String', 'Kp = 100', ...
'EdgeColor', 'none', ...
'FontSize', 12, ...
'FontName', 'Helvetica');
  3 Kommentare
Daniel M
Daniel M am 25 Okt. 2019
Yes it's possible, just make an array that contains all those points, and plot them. Although, they are kind of spread apart, I don't really see how the inset picture will be better than your main figure.
Marie Pettersen
Marie Pettersen am 25 Okt. 2019
That's true. Again, thank you very much!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Graphics Object Programming 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!

Translated by