Plotting on .fig file (in new window if possible)

54 views (last 30 days)
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
hold on
But that doesn't seem to be working.
Any help is greatly appreciated.

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 9 Oct 2019
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');
JD on 10 Oct 2019
Edited: JD on 10 Oct 2019
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!

Sign in to comment.

More Answers (1)

Ankit on 9 Oct 2019
Here is an example:
close all;
MySavedPlot = open('MySavedPlot.fig');
hold on
x = linspace(-2*pi,2*pi);
y1 = cos(x);

Community Treasure Hunt

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

Start Hunting!