导出出版物的图形:如何在绘图元素中实现一致的线条粗细?

时间:2011-05-09 01:02:04

标签: wolfram-mathematica

似乎用mma创建出版品质的图形是一种可追溯到几十年前的黑色艺术。虽然近年来情况有了很大改善,但在导出到文件时仍难以获得一致的结果。最终结果看起来似乎有些依赖于格式(根据我的经验,EPS效果最好)。

很多时候,帧和刻度线中的线条在EPS文件中最终过于模糊,而当尝试执行FrameStyle->AbsoluteThickness[2]之类的操作时,很容易得到太粗的线条。因此,我目前的方法涉及在BaseStyle中采用五个参数 - 三个线条粗细(在FrameStyle,AxesStyle和PlotStyle中),ImageSize和FontSize - 并随机调整它们直到导出的图形看起来可以接受。这有点令人不满意且耗时。

为了获得平衡,美观的情节,是否有更好的方法和/或标准处方?

编辑:这是一个例子。在屏幕上看起来不错(见屏幕截图),但将其导出到EPS中你可能会看到两件事:(a)EPS字体嵌入有一个错误:对我来说,图中的epsilon没有正确嵌入,除非我删除FontWeight->Normal指令。 (b)框架/刻度线为浅灰色且1像素厚。如果我想缩小这个数字(例如将其作为插图),它会破坏质量。但是,使用AbsoluteThickness[2]看起来很糟糕 - 所以我必须增加ImageSize。但是字体太小和/或图中的线条看起来太薄等等。

With[{exSubscript = "\[UpTee]", epsFontSize = 24, 
   xcoords = {0.63, 2.2}}, testInset = Style[Inset[Cell[TextData[Cell[
      BoxData[FormBox[SubscriptBox["\[Epsilon]", exSubscript], 
           TraditionalForm]]]]], xcoords, {Left, Baseline}], 
     FontWeight -> Normal, FontSize -> epsFontSize];
  ];
Show[Plot[10 x^2, {x, 0, 1}, PlotStyle -> Thick, Frame -> True, 
  PlotRange -> {-2, 8}, Epilog -> {testInset}], Axes -> {True, True}, 
 AxesOrigin -> {0, 0}, AxesStyle -> Dashed, 
 FrameLabel -> {"\[Lambda] [\[Mu]m]", "Re{\[Epsilon]}"}, 
 BaseStyle -> {FontSize -> 22, FontWeight -> Plain, 
   FontFamily -> Helvetica}, ImageSize -> 500]
Export["test.eps", %]

Sample plot

编辑:接受Szabolcs的答案,但是Mr.Wizard应该被指出FontFamily -> Helvetica vs FontFamily -> "Helvetica"行为(这似乎是一个错误)。如果没有引号,由于字体搞砸,PDF导出是非首发。

3 个答案:

答案 0 :(得分:17)

屏幕与打印观看

很难比较屏幕上的线条粗细,特别是当显示的厚度接近1像素时。我发现最好以最终出版物尺寸打印数字,并以这种方式检查它们的质量。

使用绝对测量值

我遇到的大多数问题源于Mathematica使用绝对和相对(对绘图大小)测量的事实。对于将出现在打印中的图形,最简单的方法是使用不随绘图缩放的绝对尺寸,特别是字体大小和线条粗细。通过这种方式,您可以很好地了解结果在打印中的结果(并且它将与图形大小无关)。你给Mathematica的数字是打印机的。

<强>导出

最后,我发现导出到EPS的可靠性低于导出为PDF的可靠性(例如,如您所提到的,可能不会嵌入字体),并且Mathematica在导出到EPS时无法保留所有功能(例如不透明度!)。对于2D图,PDF通常是一个不错的选择。但是,导出PDF并在导出中指定ImageSize时会出现错误。我使用的解决方法是

cm = 72/2.54 (* centimetres *)
Export["figure.pdf", Show[figure, ImageSize -> 7 cm]] (* 7 cm wide figure *)

您可以将结果包含在纸张中,而无需任何缩放,并且您将在所有数字中保持一致的字体大小和线条粗细。

总之,这或多或少对我有用:

  1. 对印刷品中数字需要保持一致的事物使用绝对测量值
  2. 导出为PDF,具有预期的最终大小,并且在包含之前不要重新调整结果(例如,不要在LaTeX中指定宽度)

答案 1 :(得分:5)

我替换了FontFamily -> "Helvetica"并导出为PDF。在福昕阅读器中打开PDF我看到了:

enter image description here

除了不同的缩放(不确定原因),它看起来与渲染非常相似。

答案 2 :(得分:1)

我仔细研究了LevelScheme,我用它来发布质量图片。