Instead, I had to make the axes children of the new figure. 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 Add a title to each subplot, and then add an overall title to the subplot grid. 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 This gives the desired behavior of a subplot being able to be treated as a unit in a larger scale figure.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. After some thought and work, I discovered that it is possible to encapsulate the contents of a subplot into a uipanel. Any advice would be great.ĮDIT - The issue with the accepted answer is that it would require a significant number of subplots (12x12 in my situation). My desired behavior would be to have two things in the final figure, the subplot of four items on top, and the single plot underneath. My idea of how the code would run is: someData = linspace(0,10) Apologies in advance if this isn't possible/desirable behavior. I was wondering if there were a more elegant approach. Another way is to manually specify positions of the plots inside the final figure i.e. After some searching on the web, it seems one option here is to save the subplot into a temporary figure and add it to the final subplot after. The problem is that the final subplot shows only portions of the smaller subplot. I am attempting to plot a subplot within another subplot in MATLAB.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |