您可能已经知道如何在他提供的链接中应用Alexey 的答案。但是,如果您在这里遇到问题,我会提供我如何将该技术应用于 2D 图形。
我发现如果你想创建一个好的情节,你需要非常具体地使用 Mathematica。出于这个原因,您可能已经注意到,在我的3D 栅格中,我创建了一个指定所有选项的对象,以便 Mathematica 可以满意。
in = 72;
G2D = Graphics[{},
AlignmentPoint -> Center,
AspectRatio -> 1,
Axes -> False,
AxesLabel -> None,
BaseStyle -> {FontFamily -> "Arial", FontSize -> 12},
Frame -> True,
FrameStyle -> Directive[Black],
FrameTicksStyle -> Directive[10, Black],
ImagePadding -> {{20, 5}, {15, 5}},
ImageSize -> 5 in,
LabelStyle -> Directive[Black],
PlotRange -> All,
PlotRangeClipping -> False,
PlotRangePadding -> Scaled[0.02]
];
我应该在这里提到您必须指定ImagePadding
. 如果您将其设置为all
您的 eps 文件,它将与 Mathematica 显示的不同。无论如何,我认为拥有这个对象可以让您更轻松地更改属性。
现在我们可以继续解决您的问题:
plot = ListDensityPlot[
Table[Random[], {100}, {100}],
InterpolationOrder -> 0,
Options[G2D]
]
以下将轴和栅格分开并将它们组合成结果:
axes = Graphics[{}, AbsoluteOptions[plot]];
fig = Show[plot, FrameStyle -> Directive[Opacity[0]]];
fig = Magnify[fig, 5];
fig = Rasterize[fig, Background -> None];
axes = First@ImportString[ExportString[axes, "PDF"], "PDF"];
result = Show[axes, Epilog -> Inset[fig, {0, 0}, {0, 0}, ImageDimensions[axes]]]
这里唯一的区别,在这一点上我无法解释的是轴标签,它们有小数点。最后,我们将它们导出:
Export["Result.pdf", result];
Export["Result.eps", result];
结果是 pdf 文件大小为 115 Kb,eps 文件大小为 168 Kb。
更新:
如果您使用的是 Mathematica 7,eps 文件将无法正确显示。您将看到的只是侧面带有黑色的主要人物。这是版本 7 中的一个错误。然而,这在 Mathematica 8 中已修复。
我之前提到过,我不知道为什么轴标签不同。Alexey Popkov 想出了一个解决办法。要创建axes
,fig
并result
使用以下内容:
axes = Graphics[{}, FilterRules[AbsoluteOptions[plot], Except[FrameTicks]]];
fig = Show[plot, FrameStyle -> Directive[Opacity[0]]];
fig = Magnify[fig, 5];
fig = Rasterize[fig, Background -> None];
axes = First@ImportString[ExportString[axes, "PDF"], "PDF"];
result = Show[axes, Epilog -> Inset[fig, {0, 0}, {0, 0}, ImageDimensions[axes]]]