How can I draw a frame around the inset plot?

조회 수: 7 (최근 30일)
Sim
Sim 2024년 9월 2일
댓글: Sam Chak 2024년 9월 2일
How can I draw a frame around the inset plot?
x1 = linspace(0,1);
x2 = linspace(3/4,1);
y1 = sin(2*pi*x1);
y2 = sin(2*pi*x2);
figure(1)
% plot on large axes
plot(x1,y1)
% create smaller axes in top right, and plot on it
axes('Position',[.6 .6 .2 .2])
box on
plot(x2,y2)
My desired output is the following one:

채택된 답변

Star Strider
Star Strider 2024년 9월 2일
Use an annotation object —
x1 = linspace(0,1);
x2 = linspace(3/4,1);
y1 = sin(2*pi*x1);
y2 = sin(2*pi*x2);
figure(1)
% plot on large axes
plot(x1,y1)
Ax1 = gca;
pos1 = Ax1.Position;
% create smaller axes in top right, and plot on it
Ax2 = axes('Position',[.6 .6 .2 .2]);
box on
plot(x2,y2)
pos2 = Ax2.OuterPosition;
a2 = annotation('rectangle', pos2);
a2.Color = 'r';
a2.LineWidth = 2;
.
  댓글 수: 7
Sim
Sim 2024년 9월 2일
Very clear, thanks a lot! To be honest, I got the same feeling about a possible AI anwer... OK, lets do as suggested... I accept one answer and I hope people can upvote the ather one to equally recognise both answers... :-)
Sam Chak
Sam Chak 2024년 9월 2일
I would evaluate which solution provides a more aesthetically pleasing red frame that closely matches the reference. Let @Sim decide.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Jaimin
Jaimin 2024년 9월 2일
Hi @Sim
Based on the description, I understand that you want to add a frame around the inset plot in the figure, as shown below.
Below is the sample code to meet the requirement.
x1 = linspace(0,1);
x2 = linspace(3/4,1);
y1 = sin(2*pi*x1);
y2 = sin(2*pi*x2);
figure(1)
% Plot on large axes
plot(x1, y1)
% Create smaller axes in top right, and plot on it
inset_axes = axes('Position', [.6 .6 .2 .2]);
plot(x2, y2)
% Get the current position of the inset axes
pos = inset_axes.Position;
% Adjust the position to make the rectangle slightly larger
margin = 0.01; % Adjust this value to change the size of the margin
new_pos = [pos(1) - margin, pos(2) - margin, pos(3) + 2*margin, pos(4) + 2*margin];
% Add a red box around the inset plot
annotation('rectangle', new_pos, 'Color', 'r', 'LineWidth', 2);
Please refer this MathWorks Documentation to understand “annotation”
Annotation:
I hope this will be helpful.
  댓글 수: 1
Sim
Sim 2024년 9월 2일
편집: Sim 2024년 9월 2일
Thanks @Jaimin! I would like to accept both your's and @Star Strider answer.. And following the @Image Analyst suggestions, I accepted the @Star Strider answer and I asked people to upvote yours, so that you will be equally awarded as @Star Strider (i.e. with the same score) :-)

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Annotations에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by