Removing white space in .emf plots

21 views (last 30 days)
million
million on 26 Jan 2011
I have a MATLAB program that generates data and plots the data. When I create the Figure, I use the following command:
figure100 = figure('Position',[1 1 1100 500],'Color',[1 1 1]);
Afterward, I use the
SAVEAS(figure100,FILENAME,'emf')
to save the figure to .emf file.
When I drag and drop the .emf file into PowerPoint I notice a large white space to the left and right of the figure. In order to remove the white space I typically CROP the figure in PowerPoint.
My question is how can I reduce the WHITE space in MATLAB so that I don't need to CROP in PowerPoint?

Accepted Answer

Alex Knight
Alex Knight on 27 Jan 2011
You can simply 'ungroup' the figure when you get it into PowerPoint and delete the unwanted white box. Then you can 'regroup' the remaining objects.
Alternatively - set the background to be transparent. Then you don't care (you can definitely do this with the 'copy figure' method.
  2 Comments
million
million on 28 Jan 2011
Thank you for your input. However, 'CROP' is much more easier than 'UNGROUP' & 'GROUP'.
I am no sure how to make the background transparent.
Alex Knight
Alex Knight on 24 Feb 2011
Simple!
In the figure window:
Edit>Copy Options>
Figure Background Colour>Transparent background
is one way of doing it.

Sign in to comment.

More Answers (2)

Walter Roberson
Walter Roberson on 26 Jan 2011
A lot of people have trouble saving figures nicely; it has become a FAQ . And the main answer is to use the Matlab File Exchange contribution export_fig
  1 Comment
million
million on 28 Jan 2011
Thank you for your response.
I downloaded export_fig. The issue I have is with the resolution of the final product. File format .png does not look as professional as .emf.
Please find a test program I used below:
figure100 = figure('Position',[1 1 1100 500],'Color',[1 1 1]);
plot(1:10,sin(1:10));
grid;
saveas(figure100,'figure100','emf');
export_fig figure100.png -m2.5

Sign in to comment.


Fangjun Jiang
Fangjun Jiang on 27 Jan 2011
You could adjust the position of the axes in the figure to make it looks better for you.
figure100 = figure('Position',[1 1 1100 500],'Color',[1 1 1]);
plot(1:10,sin(1:10));grid;
AxesHandle=findobj(figure100,'Type','axes');
set(AxesHandle,'Position',[0.05,0.1,0.9,0.85]);
saveas(figure100,'figure100','emf');
The position of the axes is in the format of [x,y,width,height].
You could manually adjust it to the position you like and then find out the exact number.
In the figure, click menu 'Edit'-> 'Axes Properties ...', then click the axes and adjust the position of left, right, top and bottom side
In the "Property Editor -Axes" panel, click the "More Properties ..." button, and find the "Position" value
  2 Comments
million
million on 28 Jan 2011
This is a good idea. However, I am using subplot and not plot. How do you make it work for subplot?
Here is an example of my code:
clear all;
figure100 = figure('Position',[1 1 1100 500],'Color',[1 1 1]);
subplot(3,1,1);
plot(1:10,sin(1:10),'r-');
grid;
subplot(3,1,2);
plot(1:10,cos(1:10),'g-');
grid;
subplot(3,1,3);
plot(1:10,tan(1:10),'b-');
grid;
AxesHandle=findobj(figure100,'Type','axes');
set(AxesHandle,'OuterPosition',[0,0,1,1]);
saveas(figure100,'figure101','emf');
Fangjun Jiang
Fangjun Jiang on 31 Jan 2011
In your case, AxleHandle returns three handles, which are for three of your sub-plots. You could adjust each of them.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!