Gridlines when exporting .pdf in Word 2016

5 Ansichten (letzte 30 Tage)
MichailM
MichailM am 1 Jun. 2019
Kommentiert: Jan am 20 Nov. 2019
Hi,
When importing an emf figure in Word 2016 the gridlines look fine but when exporting the document in pdf the transparency is wrong. Has anyone ever experienced this issure with emf files generated with MATLAB?
While in Word:
cap1.PNG
Exported in pdf through Word
cap2.PNG
  4 Kommentare
MichailM
MichailM am 14 Jun. 2019
Bearbeitet: MichailM am 14 Jun. 2019
@Sambit Senapati I export from Matlab R2019b in .emf and import in the latest wWord version (Office365). After that I export the document in .pdf.
@Jan Generally I do not prefer the eps+Word combination. When I import an .eps the image is not displayed at all.
Jan
Jan am 20 Nov. 2019
@MichailM: Did you embed a TIFF preview in the created EPS file? Such a preview is a raster image, but at least it is visible in Word. When printing to paper or to a PDF the vector graphics are included.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Jan
Jan am 14 Jun. 2019
Bearbeitet: Jan am 16 Jun. 2019
You can replace the grid my drawing the lines manually with the wanted color. Would this solve the problem?
aAxesH = axes('NextPlot', 'add');
plot(1:10);
GridStyle.Color = [0.5, 0.5, 0.5];
GridStyle.LineStyle = '-';
GridStyle.HitTest = 'off';
Child = get(aAxes, 'Children');
XTick = get(aAxes, 'XTick');
YTick = get(aAxes, 'YTick');
XLimit = get(aAxes, 'XLim');
YLimit = get(aAxes, 'YLim');
newGrid = cat(1, ...
line([XTick; XTick], YLimit, 'Parent', aAxes, GridStyle), ...
line(XLimit, [YTick; YTick], 'Parent', aAxes, GridStyle));
set(aAxes, 'Children', [Child; newGrid]); % See: uistack % [EDITED: vChild -> 'Children']
  2 Kommentare
MichailM
MichailM am 16 Jun. 2019
I tried that version of your solution
aAxes = axes('NextPlot', 'add');
plot(1:10);
GridStyle.Color = [0.5, 0.5, 0.5];
GridStyle.LineStyle = '-';
GridStyle.HitTest = 'off';
Child = get(aAxes, 'Children');
XTick = get(aAxes, 'XTick');
YTick = get(aAxes, 'YTick');
XLimit = get(aAxes, 'XLim');
YLimit = get(aAxes, 'YLim');
newGrid = cat(1, ...
line([XTick; XTick], YLimit, 'Parent', aAxes, GridStyle), ...
line(XLimit, [YTick; YTick], 'Parent', aAxes, GridStyle));
set(aAxes, Child, [Child; newGrid]); % See: uistack
and got the error below for the very last line
Error using matlab.graphics.axis.Axes/set
Invalid parameter/value pair arguments.
By removing it it was fine. A minor issue with that solution is that the figure box boundaries have the same color as the gridlines.
In your solution apart from drawing manually the gridliness you also adjust their color. In my turn I tried to adjust the color and opacity right after the "grid on" and seems to solve the problem. Here is an example:
f = 50;
T = 1/f;
w = 2*pi*f;
t = linspace(0,2*T,1000);
y = sin(w*t);
plot(t,y,'linewidth',2)
grid on
ax = gca;
ax.GridLineStyle = '-';
ax.GridColor = [0.9 0.9 0.9]; % RGB
ax.GridAlpha = 1; % Always at 1 so it keeps the exact grayscale set in the previous line
ax.XColor = 'k';
ax.YColor = 'k';
Jan
Jan am 16 Jun. 2019
@MichailM: My suggested code contained a typo:
% Was:
set(aAxes, vChild, [Child; newGrid]); % See: uistack
% Should be:
set(aAxes, 'Children', [Child; newGrid]); % See: uistack

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by