6

Switching to MMA10, I'd want to produce a plot using this code:

pad = 100;
Fig8 = 
 Plot[{2 p3[x], p2[x]}, {x, 0, 1}, Frame -> True, 
  PlotStyle -> {{Thick, Black}, {Thick, Dashed, Gray}}, 
  AspectRatio -> 0.6, PlotRange -> All, 
  FrameLabel -> {{"Froeschlé HE", "Chirikov mLE"}, {"Chirikov mLE", "Froeschlé mLE"}}, 
  PlotLegends -> 
   Placed[LineLegend[{"Chirikov map", "2D Froeschlé map"}, 
   LegendLabel -> Placed["p(x)", Above], 
   LegendFunction -> "Frame", LegendMargins -> 1, 
   LabelStyle -> 5], {0.65, 0.4}], 
  BaseStyle -> {FontFamily -> "Times"}, 
  FrameTicks -> {{{{0, "0.0"}, {0.2, "0.2"}, {0.4, "0.4"}, {0.6, 
   "0.6"}, {0.8, "0.8"}, {1.0, "1.0"}}, {{0, "0.0"}, {0.2, 
   "0.1"}, {0.4, "0.2"}, {0.6, "0.3"}, {0.8, "0.4"}, {1.0, 
   "0.5"}}}, {{{0, "0.0"}, {0.2, "0.2"}, {0.4, "0.4"}, {0.6, 
   "0.6"}, {0.8, "0.8"}, {1.0, "1.0"}}, {{0, "0.0"}, {0.2, 
   "0.1"}, {0.4, "0.2"}, {0.6, "0.3"}, {0.8, "0.4"}, {1.0, 
   "0.5"}}}}, ImagePadding -> {{pad, pad}, {All, All}}]`

(Feel free to change the functions p2[x] and p3[x] to whatever you want)

This is generally the same approach I used since MMA7 and 'should' look nice. However, the output is unacceptable:

Export["Fig_8.eps",Fig8]

enter image description here

compared to a .pdf file:

Export["Fig_8.pdf",Fig8]

enter image description here

Although I can convert the .pdf to .eps and it still looks ok, but this is not the case. Why does the .eps look so horrible in MMA10?

EDIT

To clarify: I don't want to get back to styling from older versions. I want the labels (axes and legend) not to be padded with randomly distributed spaces, e.g. bottom label should be "Chirikov mLE", not "Chi ri kovm LE" as it is. And the distances between letters in "Froeschle" seem to be too small. Compare the above screen shots from my Exported .eps and .pdf files.

Moreover, reading threads related to the one mentioned by Mr.Wizard, I have an impression that this lack of functionality comes from new underlying mechanism of Export in MMA10. The question is, can anyone figure out a workaround?

EDIT 2

I'm using Scientific Linux 6.

corey979
  • 23,947
  • 7
  • 58
  • 101
  • Is your issue only with the EPS output or the appearance of the plot in the Front End as well? – Mr.Wizard Jan 06 '15 at 09:08
  • 2
    I like the thinly disguised quip at @rm-rf: "Froeschlé" or "Fröschle" means "little frog" in Suebian :D – Yves Klett Jan 06 '15 at 09:31
  • @Mr.Wizard only the .eps output; in the notebook itself everything looks fine. – corey979 Jan 06 '15 at 13:29
  • Other v10 EPS problems noted here: (56779) – Mr.Wizard Jan 06 '15 at 15:09
  • You can copy and run the following at the beginning of the NB? SetOptions[$FrontEnd, PrintingStyleEnvironment -> "Working"] Is there an improvement? –  Jan 07 '15 at 05:59
  • @Mr.Wizard I read the thread, but changing EmbedExternalFonts and EmbedStandardPostScriptFonts to False does not change anything. The .eps output still has those nasty spacings; my issue are not the fonts themselves, but rather their arrangement. – corey979 Jan 07 '15 at 09:17
  • @Lou No, that doesn't change a bit... – corey979 Jan 07 '15 at 09:25
  • I did not mean to imply that thread had a solution; I was only providing links for organization. I am sorry that I do not know a solution to your problem. – Mr.Wizard Jan 07 '15 at 10:38
  • I had the same issue several time in pdf while exporting with Linux. So it is a linux issue that has been here for a very long time. – Öskå Jan 07 '15 at 12:15
  • @Öskå I'm using Scientific Linux 6 and as indicated don't have problems with .pdf, only with .eps – corey979 Jan 07 '15 at 15:19
  • Your code produced this on Mac OSX 10.10.1, Mma V10.0.1: http://i.stack.imgur.com/f2QMV.png (The viewer in Mac converts the EPS to PDF in order to display it.) It seems fairly acceptable. It's not surprising, I suppose, that font issues are system dependent. – Michael E2 Jan 07 '15 at 15:42
  • @MichaelE2 Yes indeed, that's how I'd like my plot to look like. So, hm, it's not simply an MMA10 issue, but the problem is how MMA10 cooperates with certain OS. So I suppose no fixing it as it stands and I'll have to stick to converting .pdf to .eps :( – corey979 Jan 07 '15 at 16:57
  • 2
    @corey979 Have you tried Export["Fig_8.eps", First@ImportString[ExportString[Fig8, "PDF"]]], or perhaps that is what you wish to avoid. You can make it into a function, so that it's not terribly inconvenient. I would say that it is also possible that certain OS don't do their fonts correctly. That's my experience as an end-user. – Michael E2 Jan 07 '15 at 17:24
  • I'm not seeing the font-spacing problem when with Mathematica 10.0.1 under Mac OS X 10.9.5 I export to EPS, even without font-embedding, and when I view the exported file in either GhostView for Mac or Graphic Converter. In each app, I do believe I'm directly viewing the EPS and not a conversion to PDF. – murray Jan 07 '15 at 19:32
  • @MichaelE2 that works perfect! That's the answer I was looking for. Thanks a lot! Post a full answer so I can approve it. – corey979 Jan 09 '15 at 12:13

2 Answers2

8

Try to add the option: PlotTheme->"Classic"which transforms the plot to the style of MMA7:

 pad = 100;
Fig8 = Plot[{2 Cos[x], Sin[x]}, {x, 0, 1}, PlotTheme -> "Classic", 
  Frame -> True, PlotStyle -> {{Thick, Black}, {Thick, Dashed, Gray}},
   AspectRatio -> 0.6, PlotRange -> All, 
  FrameLabel -> {{"Froeschlé HE", "Chirikov mLE"}, {"Chirikov mLE", 
     "Froeschlé mLE"}}, 
  PlotLegends -> 
   Placed[LineLegend[{"Chirikov map", "2D Froeschlé map"}, 
     LegendLabel -> Placed["p(x)", Above], LegendFunction -> "Frame", 
     LegendMargins -> 1, LabelStyle -> 5], {0.3, 0.55}], 
  BaseStyle -> {FontFamily -> "Times"}, 
  FrameTicks -> {{{{0, "0.0"}, {0.4, "0.4"}, {0.8, "0.8"}, {1.2, 
       "1.2"}, {1.6, "1.6"}}, {{0, "0.0"}, {0.4, "0.2"}, {0.8, 
       "0.4"}, {1.2, "0.6"}, {1.6, "0.8"}, {2, "1"}}}, {{{0, 
       "0.0"}, {0.4, "0.4"}, {0.8, "0.8"}, {1.0, "1.0"}}, {{0, 
       "0.0"}, {0.4, "0.2"}, {0.8, "0.4"}, {1.2, "0.6"}}}}, 
  ImagePadding -> {{pad, pad}, {All, All}}]

The result should look like the following:

enter image description here

If this is not what you are looking for, please explain more precisely.

Have fun!

Alexei Boulbitch
  • 39,397
  • 2
  • 47
  • 96
  • Unfortunately this doesn't change anything. The problem with my Export to .eps is that the upper label is slightly cut from above, and that the spacings between letters are completely misaligned. The bottom label should be "Chirikov mLE", but it looks like "Chi ri kovm LE"; note also extremely big spacings in the legend. When I Export to .pdf everything looks ok and in the Front End also everything is fine. So there's a bug connected with exporting to .eps – corey979 Jan 06 '15 at 17:56
  • 1
    @corey979 These are two separate questions. The first is how to achieve the style like in Mma7, and the second is how to export to eps. Above I only answered the first one. Concerning the second there were several discussions here. May be it is worth having a look. My feeling is that there are some problems with the exporting to eps in Mma9 amd 10. I, however, often successfully do such an export to later use the images as illustrations for journal publications. My trick is to first rasterize the image: Rasterize[Fig8,RasterSize->1000]. Try this, it might help. – Alexei Boulbitch Jan 07 '15 at 08:19
5

On some computer systems, the OS & Mathematica seem not handle fonts properly when exporting to EPS. I am not able to check all systems, but it is possible that converting an expression to PDF first and then to EPS might work. Importing the PDF shows that the font glyphs in the image you get have been converted to Mathematica graphics primitives (FilledCurve usually). Exporting the graphics to EPS should work on all systems. The only possible hitch is whether the fonts were rendered properly in the PDF conversion and import.

Code:

Export["Fig_8.eps", First@ImportString[ExportString[Fig8, "PDF"]]]

General-use function:

exportViaPDF[file_String, expr_, opts___?OptionQ] := 
 Export[file, 
  First@ImportString[
    ExportString[expr, "PDF", "PDFOptions" /. {opts} /. "PDFOptions" -> {}]],
  opts]

It's hard to set defaults for options to Export. See Pass Options to Export[]. On the other Export is very forgiving of options that make no sense. It seems to ignore them.

Side note: In some random testing, I found the default PDF option setting "AllowRasterization" -> Automatic leads to error messages when the expr is 3D graphics (V10.0.1, Mac OSX 10.10.1):

Import::general: Unsupported Shading type 7 >>

But both the True and False settings worked fine. Example:

exportViaPDF["foo.eps", Plot3D[Sin[x y], {x, -2, 2}, {y, -2, 2}],
  "PDFOptions" -> {"AllowRasterization" -> True}, ImageSize -> 100]
Michael E2
  • 235,386
  • 17
  • 334
  • 747