似乎用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", %]
编辑:接受Szabolcs的答案,但是Mr.Wizard应该被指出FontFamily -> Helvetica
vs FontFamily -> "Helvetica"
行为(这似乎是一个错误)。如果没有引号,由于字体搞砸,PDF导出是非首发。
答案 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 :(得分:5)
我替换了FontFamily -> "Helvetica"
并导出为PDF。在福昕阅读器中打开PDF我看到了:
除了不同的缩放(不确定原因),它看起来与渲染非常相似。
答案 2 :(得分:1)
我仔细研究了LevelScheme,我用它来发布质量图片。