MATLAB Answers

2

copy legend information - 2014b

Asked by Rashmil Dahanayake on 4 Oct 2014
Latest activity Commented on by Phuc Thien NGUYEN on 28 Jun 2016
Hi, I want to copy few figures into a new figure with subplots. Hence as the initial step i intend to copy axes and legend information. In 2014b legend information saved as a object type.
% existing figure
h = surf(peaks);
colormap hsv
legend('temperature')
% new figure
fig = figure;
ax = axes;
new_handle = copyobj(h,ax);
colormap(fig,hsv)
view(ax,3)
grid(ax,'on')
How can I import the legend data and position to the new figure in matlab 2014b.

  0 Comments

Sign in to comment.

Products

1 Answer

Answer by Vivek Jadye on 4 Oct 2014

It is quite easy to copy axes and corresponding legend to a new figure. All you have to do is to use copyobj function as follows.
If you want to copy a specific axes and corresponding legend to a new figure it could be done this way
% existing figure
h = surf(peaks);
colormap hsv
leg = legend('temperature'); %Store legend object for copying
ax = findobj(gcf,'type','axes'); %Retrieve the axes to be copied
% new figure
fig = figure;
copyobj([leg,ax],fig);
colormap(fig,hsv);
If you intend to copy every figure child to a new figure you can simply do the following.
% existing figure
h = surf(peaks);
colormap hsv
legend('temperature');
oldfig = gcf;
% new figure
fig = figure;
copyobj(oldfig.Children,fig);
colormap(fig,hsv);
Hope this helps.
Cheers!

  3 Comments

Hi, once the original figure is generated i don't have access to the variable "leg"-ie legend. In that case how would I specifically make a query to access legend properties and export that to a new figure.
Looks like you can get the legend handle for a particular axes object with syntax like "legh = legend(ax)"
You can also do legend(ax,'show') or legend(ax,'hide')
Great! It works perfectly. Thank you, Keith Rogers.

Sign in to comment.