![]() ![]() Object figure can not be a child of parent For example hNew = copyobj(fig(1),hFigure) gave the error Error using copyobj It seemed that a figure couldn't be made the child of another figure. The code from gnovice didn't work for me. You could avoid the need to create and then delete subplots by specifying the positions yourself. Set(hNew,'Position',newPos) %# Modify its positionĪlso note that SUBPLOT is only used here to generate a position for the tiling of the axes. If you want the axes object to appear in both figures, you can instead use the function COPYOBJ like so: hNew = copyobj(fig(1),hFigure) %# Copy fig(1) to hFigure, making a new handle The above will actually move the axes from the old figure to the new figure. ![]() ![]() HTemp = subplot(2,1,2,'Parent',hFigure) %# Make a new temporary subplot Set(fig(1),'Parent',hFigure,'Position',newPos) %# Move axes to the new figure NewPos = get(hTemp,'Position') %# Get its position ![]() HTemp = subplot(2,1,1,'Parent',hFigure) %# Create a temporary subplot However, to answer the question you asked, here's a way to accomplish this given that you are outputting the axes handles (not the figure handles) in the vector fig ( note: this is basically the same solution as the one given in the other question, but since you mention having trouble adapting it I thought I'd reformat it to better fit your specific situation): hFigure = figure() %# Create a new figure no additional arguments specified) would be to create its own figure and place the plot there. The default behavior of myFunkyFigure (i.e. MyFunkyFigure(dataSet2,hSub2) %# Add a funky plot to the second subplot axes HSub2 = subplot(2,1,2) %# Create a second subplot MyFunkyFigure(dataSet1,hSub1) %# Add a funky plot to the subplot axes Then you would use it like so: hSub1 = subplot(2,1,1) %# Create a subplot In such case, you need to add more conditions to identify the axes handles of the plots you are interested in.Obviously, we don't know how "funky" your figures are, but it should be noted in such a case that the cleanest solution would be to modify the function myFunkyFigure such that it accepts additional optional arguments, specifically the handle of an axes in which to place the plot it creates. There might be other axes objects in your figure if it's more than just a simple plot. The condition of the empty tag is to exclude the axe handles of legends, whose tag will be legend. The first line finds all the objects under figure_handle of type "axes" and empty tag (''). % find all axes handle of type 'axes' and empty tagĪll_ha = findobj( figure_handle, 'type', 'axes', 'tag', '' ) If there are many subplots, and collecting their axes handle one by one does not seem a clever way to do the job, you can find all the axes handle in the given figure handle by the following commands figure_handle = figure You should be able to zoom in all the subplots simultaneously Plot(+10) % Plot random stuff here as an example Ha(2) = subplot(2,1,2) % get the axes handle when you create the subplot Plot() % Plot random stuff here as an example Following is a quick example for your case ha(1) = subplot(2,1,1) % get the axes handle when you create the subplot Use linkaxes as Yair and Amro already suggested. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |