gpt4 book ai didi

wolfram-mathematica - 如何在保持标签清晰的同时减小导出图的文件大小

转载 作者:行者123 更新时间:2023-12-04 01:02:55 27 4
gpt4 key购买 nike

将相当复杂的绘图(尤其是 ListDensityPlot)导出为 PDF 或 EPS(例如用于发布)时,生成的文件大小可能非常大。例如:

data = Flatten[Table[{f0, f, Exp[-(f - f0)^2/25^2]}, {f0, 500, 700, 5}, {f, 300, 
900}], 1];
plot=ListDensityPlot[data,PlotRange->{Automatic,Automatic,{0,1}},InterpolationOrder->0]

Mathematica graphics

这个示例数据集的大小与我通常使用的大小相同。当我使用 Export["C:\\test.pdf", plot] 导出时,它会生成一个大小为 23.9MB 的 PDF 文件。如果我改为尝试 Export["C:\\test1.pdf", Rasterize[plot]]它要小得多,但图像的完整性和可缩放性自然会受到影响。

如果我的实际数字是组合图,则情况会更加复杂,例如(编辑: f 转到 900)
plot2 = Show[plot, Plot[x, {x, 500, 900}, PlotStyle -> Thick]]

Mathematica graphics

(或使用 Epilog )我很想拥有背景 ListDensityPlot被光栅化,但将其他标记和绘图保留为“矢量”形式。或者至少,帧标签是非光栅化的。

有没有办法做到这一点?

或者,通过其他一些聪明的方法来实现相同的目标?

更新

我已经检查了相关问题,但这一定比它需要的复杂得多(基本上是导出然后导入)。我已经能够利用该问题中的一些技巧从轴中单独提取绘图:
axes = Graphics[{}, Options[plot2]]

Mathematica graphics
plots = Graphics[plot2[[1]]]

Mathematica graphics

但是, plots术语丢失 AspectRatioPlotRangeplots可以用 Rasterize 击中,但它需要尺寸固定。

然后,如何将它们组合在一起?

最佳答案

这正是我编写链接到此处的函数所针对的那种问题:
http://pages.uoregon.edu/noeckel/computernotes/Mathematica/listContourDensityPlot.html

它基于与 Heike 的回答相同的想法——我只是添加了更多功能,以便您可以安全地更改纵横比、不透明度并与其他绘图结合。请参阅我在 Heike 的回答中的评论。

要尝试使用您的数据,请执行以下操作:

plot = Show[
listContourDensityPlot[data,
PlotRange -> {Automatic, Automatic, {0, 1}},
InterpolationOrder -> 0, Contours -> None],
Graphics[Line[{{500, 500}, {700, 700}}]]]

还有一些从父页面链接的类似功能。

关于wolfram-mathematica - 如何在保持标签清晰的同时减小导出图的文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8717608/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com