5
$\begingroup$

I have been desperately struggling with an issue that I assume should concern also some other Mathematica users: I am trying to Export plots from Mathematica to a dissertation I write in MS Word 2016 and then get a perfect (or at least very good) result in PDF on screen and in print (if necessary using Adobe Acrobat). I have read all the stackexchange posts on this and didn't find a solution. The plots are Legended Panel and within a GraphicsGrid.

I have tried to Export my plots in virtually every format (among others, EPS, EMF/WMF, JPG, PNG, TIFF, BMP) as well as workarounds proposed on stackexchange such as to export the plot as PDF and then transform it to PNG in Adobe Acrobat and I have encountered so many different problems that it wouldn't be possible to describe them all here.

It seems to me that (given that EPS is not supported any more by MS Office) EMF should be the best format available to export plots to MS Word 2016. However, there remain a variety of issues:

  • Wrapping: Word wraps the y-axis label. This can be solved using the ImageFormattingWidth -> \[Infinity] option. (Solved)

  • Cropping: In my legended/panel-plot Mathematica crops the top line of the PlotLabelhorizontally in half. It can be solved by using the workaround of inserting another empty row above, however I wonder why it doesn't work properly by default. (Solved)

  • Ticks: Using EMF, the exported plot doesn't have any ticks any more. I solved this by using Jens' workaround. (Solved)

  • Now the only open issue is that the PlotLabel Text looks awkward, the spaces between the letters are too large. See picture below. (unsolved)

The results with EMF using the workarounds described above with awkward label texts questions unresolved looks like this (quality is actually much better/very good on PDF, it's just blurry because of the uploading as an PNG) - the issue that is NOT solved is the spaces between the letters in the PlotLabel:

EMF all workarounds but text question open

The code looks like this:

In[1]:= plotvereinfacht[var_] := ListPlot[{var Range[10], var Range[10] 0.8, var Range [10] 1.2}, Frame -> True, FrameTicks -> {{Automatic, None}, {Automatic, None}}, PlotStyle -> {Black, Blue, Orange, Lighter[Blue, 0.4], 
Lighter[Red, 0.4]}, PlotLabel -> Row@{"\[Mu] = ", 1, "     \[Delta] = ", 2, "    \[Gamma] = ", 3, "    T = ", 4, "    \[Tau] = ", 5}, ImageSize -> 450, BaseStyle -> Directive @@ {FontFamily -> "Helvetica", 12, FontColor -> Black}, Epilog -> {Red, Thickness[0.0015], Line[{{0 + var, -500}, {0 + var, 500}}]}]

In[2]:= gridplot = Legended[Panel[GraphicsGrid[{{plotvereinfacht[3], plotvereinfacht[3]}, {plotvereinfacht[3], plotvereinfacht[4]}}, PlotLabel -> Style["\n Ueberschriftentest und Test von Ueberschriften \n in \stark vereinfachtem Modell gleichverteilter Projekte\n", 14], Spacings -> {0, 0}, ImageSize -> 800], {Style["\[Mu] (Niveau der Cashflows)", {12, Darker[Gray, 0.4]}], Rotate[Style["Kapitalwert/Test von Ueberschriften der Zahlungen", {12, Darker[Gray, 0.4]}], Pi/2]}, {Bottom, Left}, Spacings -> 0, FrameMargins -> -7, Background -> White], Placed[LineLegend[{Black, Blue, Orange}, {"Kapitalwert",      "Profit (\[Tau]=T)", "Testueberschrift (\[Tau]=T)"}, LegendLayout -> {"Column", 3}], Bottom]]

In[3]:= Export["C:\\data\\desktop\\gridplot Jens Workaround.emf", Style[gridplot, Magnification -> 1], ImageResolution -> 1000, ImageFormattingWidth -> \[Infinity], ImageSize -> 12*144]

I would be very, very grateful if someone knew how to get rid of this text issue (without raising new issues) given that I have now spent days checking different formats and workarounds and for finding workarounds for EMF. Or is there another format than EMF that works better overall?

By the way, all this only works if I use the built-in "Save as...PDF" function of MS Word 2016 and it does NOT work with the Adobe Acrobat Add-in in MS Word and NOT if I use "print" and then "Adobe Acrobat PDF".

$\endgroup$
  • 2
    $\begingroup$ Try using Magnification -> 1.05 in the export. $\endgroup$ – Simon Woods Oct 30 '16 at 13:29
  • $\begingroup$ @SimonWoods it works! Pretty quick fix, thank you! :) Do you know why it works with a magnification of 1.05 but not with 1? $\endgroup$ – andreas Oct 30 '16 at 13:36
  • 3
    $\begingroup$ I have no idea! I guess specifying a magnification other than 1 forces the front end to compute new sizes for everything, perhaps some parts of that process are skipped if the magnification is 1. $\endgroup$ – Simon Woods Oct 30 '16 at 13:48
  • $\begingroup$ Unfortunately I was wrong.. it doesn't work. If you put magnification of 1.05 then the title is fine, but the ytitle gets wrapped..if you put less, e.g. 0.9, the title is fine again, but spaces appear in the xtitle. Does anyone have a solution? :/ $\endgroup$ – andreas Mar 9 '17 at 16:18
3
$\begingroup$

It appears that using a magnification slightly greater than 1 will fix the PlotLabel issue without affecting the Ticks workaround:

Export["better.emf", Style[gridplot, Magnification -> 1.05], 
  ImageResolution -> 1000, ImageFormattingWidth -> ∞, ImageSize -> 12*144]

I do not know why this works.

$\endgroup$
  • $\begingroup$ It works. However, with other plots, the same issue comes up even if magnification is set to 1.05. Then it sometimes works when setting it to 0.95. $\endgroup$ – andreas Oct 30 '16 at 15:43
  • $\begingroup$ Does anyone have an idea why the Adobe Acrobat add-in in MS Word 2016 does not produce a satisfactory outcome? The EMF makes the spacing too small so text is barely readable... $\endgroup$ – andreas Oct 30 '16 at 15:45
  • $\begingroup$ Unfortunately it doesn't work. If you put magnification of 1.05 then the title is fine, but the ytitle gets wrapped..if you put less, e.g. 0.9, the title is fine again, but spaces appear in the xtitle. Does anyone have a solution? :/ $\endgroup$ – andreas Mar 9 '17 at 16:18
2
$\begingroup$
  1. When I Export["temp.jpg", Style[gridplot, Magnification -> 1], ImageResolution -> 1000, ImageFormattingWidth -> \[Infinity], ImageSize -> 12*144] the spacing is fine. The resolution is ugly, therefore proceed to 2.

  2. Try making a large plot for exports:

If[True, {(*true for screen,false for publishing*) ftsz = 12,(*set to 42 for publishing; 12 for screen*) imgsz = 57}(*set to 200 for print quality, i.e., publishing, and 57 for screen*) , {ftsz = 42, imgsz = 200}];(*else publishing*) fntandsz = {FontFamily -> "Helvetica", FontSize -> ftsz};

and then

plotvereinfacht[var_] := ListPlot[{var Range[10], var Range[10] 0.8, var Range[10] 1.2}, Frame -> True, FrameTicks -> {{Automatic, None}, {Automatic, None}}, PlotStyle -> {Black, Blue, Orange, Lighter[Blue, 0.4], Lighter[Red, 0.4]}, PlotLabel -> Row@{"\[Mu] = ", 1, " \[Delta] = ", 2, " \[Gamma] = ", 3, " T = ", 4, " \[Tau] = ", 5}, ImageSize -> 7.9 imgsz, BaseStyle -> Directive @@ {FontFamily -> "Helvetica", ftsz, FontColor -> Black}, Epilog -> {Red, Thickness[0.0015], Line[{{0 + var, -500}, {0 + var, 500}}]}, BaseStyle -> fntandsz]

and

gridplot2 = Legended[Panel[ GraphicsGrid[{{plotvereinfacht[3], plotvereinfacht[3]}, {plotvereinfacht[3], plotvereinfacht[4]}}, PlotLabel -> Style["Ueberschriftentest und Test von Ueberschriften in stark \ vereinfachtem Modell gleichverteilter Projekte\n", 1.4 ftsz], Spacings -> {0, 0}, ImageSize -> 17 imgsz], {Style[ "\[Mu] (Niveau der Cashflows)", {ftsz, Darker[Gray, 0.4]}], Rotate[Style[ "Kapitalwert/Test von Ueberschriften der Zahlungen", {ftsz, Darker[Gray, 0.4]}], Pi/2]}, {Bottom, Left}, Spacings -> 0, FrameMargins -> -7, Background -> White, BaseStyle -> fntandsz], Placed[LineLegend[{Black, Blue, Orange}, {"Kapitalwert", "Profit (\[Tau]=T)", "Testueberschrift (\[Tau]=T)"}, LegendLayout -> {"Column", 3}, LabelStyle -> fntandsz], Bottom]]

then only export large ones:

If[ftsz == 42,Export["temp.jpg", gridplot2, ImageSize -> 17 imgsz]]

$\endgroup$
  • 4
    $\begingroup$ PNG is usually better for graphics. JPG is really optimised for photographs. $\endgroup$ – Simon Woods Oct 30 '16 at 13:38
  • 1
    $\begingroup$ @Nicholas G THANK YOU for your help. After losing days with this issue, I just went with SimonWoods' quick fix. However, I don't know if I (or other users) not might get back to your solution since I have many different plots and I don't know if I won't need your more elaborate solution for other plots that can't be fixed by increasing magnification. So thanks! $\endgroup$ – andreas Oct 30 '16 at 14:13
  • 1
    $\begingroup$ Thanks Andreas. For publication purposes, I do not like the resolution of exported regular-sized plots and I have not been able to fix that using ImageResolution. The complexity of my proposal is due to the many elements in your graph. Their numerosity has the result that each needs to receive a font size instruction. Same about the nested figures: the first four figures need a size instruction, then the combination of the four needs another size instruction. If you used separate plots and placed text using Prolog->{graphics primitives} it would be much simpler. $\endgroup$ – Nicholas G Oct 30 '16 at 15:59
  • $\begingroup$ Thanks Nicholas. I tried to implement your solution, since nothing else worked. It's really frustrating. It somehow got besser, but it again started to crop the headlines...Do you have an example for using Prolog -> {graphics primitives}? $\endgroup$ – andreas Mar 10 '17 at 13:56
  • $\begingroup$ @andreas, my export to png seems to work, what is the problem? $\endgroup$ – Nicholas G Mar 22 '17 at 13:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.