Hello,
I am trying to open a figure and plot additional data on it. The figure was given to me as a .fig file so I do not have the data to recreate it.
To open the file, I am using the following code:
fig = openfig('filename');
However that opens it in the script tab and not as a new figure window. How can I open it in a new figure window like all my other plots?
Once I have that opened (regardless of in new window or not), how do I plot on it?
I am trying
openfig('filename')
hold on
plot(x,y)
But that doesn't seem to be working.
Any help is greatly appreciated.
Thanks!

댓글 수: 4

Can you upload the .fig file?
JD
JD 2019년 10월 10일
Image attached
image.jpeg
Stephan
Stephan 2019년 10월 10일
Upload the file means to attach the .fig file i guess- not a picture of it.
JD
JD 2019년 10월 10일
My bad. Attached is the .fig file

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

 채택된 답변

Walter Roberson
Walter Roberson 2019년 10월 9일

0 개 추천

Figures are container objects that cannot be directly drawn to. You can only plot() into axes. Axes are contained inside figures or inside uipanels (or a small number of other container types.)
In order to draw, you will need to either select an existing axes or else create a new axes inside the figure.
%get the figure
fig = openfig('filename');
%pull out the right axes
fig_axes = findobj(fig, 'type', 'axes');
selected_axes_idx = 2; %set as appropriate for your purpose
ax = fig_axes(selected_axes_idx);
%do the additional drawing
hold(ax, 'on');
x = linspace(-2*pi,2*pi);
y1 = cos(x);
plot(ax, x, y1, 'color', 'b');
hold(ax, 'off');

댓글 수: 5

JD
JD 2019년 10월 9일
편집: JD 2019년 10월 9일
Hi Walter,
What does selected_axes_idx mean? Any number larger than 1 gives me the error "Index exceeds the number of array elements (1)"
Attached is my .fig file and the point I am trying to plot. On a normal figure, this would be fairly simple, but I'm having trouble plotting on a .fig file.
fig = openfig('enginemap.fig');
fig_axes = findobj(fig, 'type', 'axes');
selected_axes_idx = 1;
ax = fig_axes(selected_axes_idx);
hold(ax, 'on');
plot(1719.6,270.2, 'x r')
hold(ax, 'off');
Your marker just was not very visible.
%get the figure
filename = 'enginemap.fig';
fig = openfig(filename);
%pull out the right axes
ax = gca(fig);
%do the additional drawing
hold(ax, 'on')
plot(1719.6,270.2, 'x r', 'MarkerSize', 40);
hold(ax, 'off');
JD
JD 2019년 10월 10일
Hi Walter,
That still didn't work. I am attaching the .fig file if you would like to test it
I tested with the .fig you posted earlier, and it worked fine for me.
Which MATLAB release are you using?
JD
JD 2019년 10월 10일
편집: JD 2019년 10월 10일
Hi Walter,
Ignore my previous comment about it not working. I had many other figures in my code and it was plotting it on those instead of the one I wanted to plot it on. So I created an empty script just for this section of the code.
Thanks so much for your help!

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

추가 답변 (1개)

Ankit
Ankit 2019년 10월 9일

0 개 추천

Here is an example:
close all;
MySavedPlot = open('MySavedPlot.fig');
figure(MySavedPlot)
hold on
x = linspace(-2*pi,2*pi);
y1 = cos(x);
plot(x,y1,'color','b')

카테고리

도움말 센터File Exchange에서 Creating, Deleting, and Querying Graphics Objects에 대해 자세히 알아보기

제품

질문:

JD
2019년 10월 9일

편집:

JD
2019년 10월 10일

Community Treasure Hunt

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

Start Hunting!

Translated by