Pio*_*dal 5 pdf wolfram-mathematica export eps figure
如何优化Mathematica生成的eps或pdf文件的大小?
通常文件大小应该比它大50-100倍(下面的例子).对于某些应用程序(例如将图形放在出版物中,或者甚至更多 - 将其放在大型海报上)我需要在矢量图形中使用轴,因此对于我来说使用光栅图形并不是最佳选择.
每个实用的解决方案(无论是在Mathematica中设置正确的选项,还是在其他应用程序中进行进一步的转换)都将受到赞赏.
例如,下面的代码生成一个eps数字:
plot = ListDensityPlot[
Table[Random[], {100}, {100}],
InterpolationOrder -> 0]
Export["testplot.eps", plot]
Export["testplot.pdf", plot]
Run Code Online (Sandbox Code Playgroud)
生成一个大小为3.3MB且pdf大小为5MB的eps文件(如果它有所不同,则在Mac OS X 10.6上的Mathematica 7上).
为了进行比较,具有相同轴的3x3图具有8kB(pdf)至20kB(eps).bmp中100x100点为30kB(png略低).
对于其他类型的情节,问题是相同的,重点是ListPlot3D
.
您可能已经想出如何在他提供的链接中应用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]
];
Run Code Online (Sandbox Code Playgroud)
我在这里要提到你必须指明ImagePadding
.如果将其设置为all
eps文件将与Mathematica显示的不同.无论如何,我认为拥有这个对象可以让你很容易地改变属性.
现在我们可以继续讨论你的问题了:
plot = ListDensityPlot[
Table[Random[], {100}, {100}],
InterpolationOrder -> 0,
Options[G2D]
]
Run Code Online (Sandbox Code Playgroud)
以下分隔轴和栅格并将它们组合成结果:
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]]]
Run Code Online (Sandbox Code Playgroud)
这里唯一的区别,在这一点上我无法解释的是轴标签,它们有小数点.最后,我们导出它们:
Export["Result.pdf", result];
Export["Result.eps", result];
Run Code Online (Sandbox Code Playgroud)
结果是pdf文件的大小为115 Kb,eps文件的大小为168 Kb.
如果您使用的是Mathematica 7,则无法正确显示eps文件.所有你会看到的是你的主要人物,侧面是黑色.这是版本7中的错误.然而,这在Mathematica 8中得到修复.
我之前曾提到过,我不知道为什么轴标签不同.阿列克谢普普科夫想出了一个解决方案.要创建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]]]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6783 次 |
最近记录: |