Azzera filtri
Azzera filtri

Removing white space in .emf plots

15 visualizzazioni (ultimi 30 giorni)
million
million il 26 Gen 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?

Risposta accettata

Alex Knight
Alex Knight il 27 Gen 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 Commenti
million
million il 28 Gen 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 il 24 Feb 2011
Simple!
In the figure window:
Edit>Copy Options>
Figure Background Colour>Transparent background
is one way of doing it.

Accedi per commentare.

Più risposte (2)

Walter Roberson
Walter Roberson il 26 Gen 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 Commento
million
million il 28 Gen 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

Accedi per commentare.


Fangjun Jiang
Fangjun Jiang il 27 Gen 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 Commenti
million
million il 28 Gen 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 il 31 Gen 2011
In your case, AxleHandle returns three handles, which are for three of your sub-plots. You could adjust each of them.

Accedi per commentare.

Community Treasure Hunt

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

Start Hunting!

Translated by