Gridlines when exporting .pdf in Word 2016

1 visualizzazione (ultimi 30 giorni)
MichailM
MichailM il 1 Giu 2019
Commentato: Jan il 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 Commenti
MichailM
MichailM il 14 Giu 2019
Modificato: MichailM il 14 Giu 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 il 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.

Accedi per commentare.

Risposta accettata

Jan
Jan il 14 Giu 2019
Modificato: Jan il 16 Giu 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 Commenti
MichailM
MichailM il 16 Giu 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 il 16 Giu 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

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Interactive Control and Callbacks in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by