相关疑难解决方法(0)

Mathematica:PNG的透明背景

这很可能是Mathematica 8.0.1中的一个错误,也可能是其他版本.让我们尝试以下方法:

Table[
 Export[
  "Res_" <> ToString[r] <> ".png", Rasterize[
  Style[x^2 + y^2, 40],
  Background -> None,
  ImageResolution -> r
 ],
 Background -> None],
 {r, {20, 40, 100, 300, 400, 500, 600}}
]
Run Code Online (Sandbox Code Playgroud)

这是我获得的屏幕截图:

产量

首先要注意的是,最后两张图片的尺寸错误.这在某种程度上是好的,因为我对300或以上的分辨率感到满意.现在看看这个:

in = 72;
G3D = Graphics3D[AspectRatio -> 0.925, Axes -> {True, True, True}, 
  AxesEdge -> {{-1, -1}, {1, -1}, {-1, -1}}, AxesStyle -> Directive[10, Black],
  BaseStyle -> {FontFamily -> "Arial", FontSize -> 12}, Boxed -> False,
  BoxRatios -> {1, 1, 1}, LabelStyle -> Directive[Black], 
  ImagePadding …
Run Code Online (Sandbox Code Playgroud)

plot wolfram-mathematica image mathematica-8

13
推荐指数
1
解决办法
5137
查看次数

如何在"工作"风格环境而不是"打印输出"中导出图形?

我最近了解到,Export数学默认使用的"Printout"画面风格的环境,而不是"Working"导出为PDF时.它有时会导致FontSize生成的PDF中的波动非常烦人.

试试例子:

Show[First@ImportString[ExportString[Style[T, 100], "PDF"], "PDF"], 
 Prolog -> Inset[Style[T, 100], FormatType -> StandardForm]]
Show[First@ImportString[ExportString[Style[T, 100], "PDF"], "PDF"], 
 Prolog -> 
  Inset[Style[T, 100, Magnification -> .8], 
   FormatType -> StandardForm]]
Run Code Online (Sandbox Code Playgroud)

截图

您可以看到导出的"T"具有笔记本中出现的"T"大小的80%.这是"Printout"默认情况下调整环境的方式.

有没有办法强制Export使用默认"Working"环境?

PS由于某些原因,Magnification->1为"打印输出"环境设置私有样式表不会影响Export.

wolfram-mathematica mathematica-frontend

12
推荐指数
1
解决办法
1307
查看次数

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

将相当复杂的图(特别是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]
Run Code Online (Sandbox Code Playgroud)

Mathematica图形

此示例数据集的大小与我通常使用的大小相同.当我使用导出时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]]
Run Code Online (Sandbox Code Playgroud)

Mathematica图形

(或使用某些用法Epilog)我喜欢将背景ListDensityPlot光栅化,但保留其他标记并以"矢量"形式绘制.或者至少,帧标签是非光栅化的.

有没有办法做到这一点?

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


更新

我已经检查了相关的问题,但这需要比它需要的更复杂(主要是导出然后导入).我已经能够利用该问题中的一些技巧来分别从轴中提取图:

axes = Graphics[{}, Options[plot2]]
Run Code Online (Sandbox Code Playgroud)

Mathematica图形

plots = Graphics[plot2[[1]]]
Run Code Online (Sandbox Code Playgroud)

Mathematica图形

但是,在plots长期失去AspectRatioPlotRangeplots可以用被击中Rasterize,但它需要的尺寸固定.

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

wolfram-mathematica

12
推荐指数
2
解决办法
4399
查看次数

Mathematica:3D线框

Mathematica是否支持线框图像的隐藏线移除?如果情况并非如此,那么有没有人遇到过这样的方法呢?让我们从这开始:

Plot3D[Sin[x+y^2], {x, -3, 3}, {y, -2, 2}, Boxed -> False]
Run Code Online (Sandbox Code Playgroud)

产量

要创建线框,我们可以:

Plot3D[Sin[x+y^2], {x, -3, 3}, {y, -2, 2}, Boxed -> False, PlotStyle -> None]
Run Code Online (Sandbox Code Playgroud)

产量

我们可以做的一件事就是将所有表面着色为白色.然而,这是不希望的.原因是因为如果我们将这个隐藏的线框架模型导出为pdf,我们将拥有Mathematica用于渲染图像的所有白色多边形.我希望能够以pdf和/或eps格式获得隐藏线移除的线框.


更新:

我已经发布了这个问题的解决方案.问题是代码运行速度很慢.在当前状态下,它无法在此问题中为图像生成线框.随意玩我的代码.我在帖子的末尾添加了一个链接.您也可以在此链接中找到代码

plot wolfram-mathematica wireframe mathematica-8

9
推荐指数
1
解决办法
4844
查看次数

Mathematica:标签和绝对定位

如何在mathematica中将文本放置在绘图之外?快速谷歌搜索将引导您

http://reference.wolfram.com/mathematica/howto/AddTextOutsideThePlotArea.html

这是不够的,因为你想用代码实现这一点.在mathematica中放置文本的一个简单示例如下:

    Show[ 
     Plot[x^3, {x, -1, 1},
      Frame -> True, 
      ImageSize -> Medium, 
      FrameLabel -> {"x", "y"},
      PlotRange -> {{-1, 1}, {-1, 1}}
      ],
     Graphics[
      Text[Style["A", Bold, 14, Red], {.5, .5}]]
     ]
Run Code Online (Sandbox Code Playgroud)

这将字母A放置在相对于图的点(.5,.5)处.有没有办法相对于图像的大小放置文本?据我所知,一切都在情节坐标中完成.治标不治本我是设置选项PlotRangeClippingFalse并给予正确的坐标设置文本.

Show[
    Plot[
        x^3, {x, -1, 1}, 
        Frame -> True, 
        ImageSize -> Medium, 
        FrameLabel -> {"x", "y"}, 
        PlotRange -> {{-1, 1}, {-1, 1}}
    ],
    Graphics[
        Text[
            Style["A", Bold, 14, Red], 
            {-1.2, 1}
        ]
    ],
    PlotRangeClipping -> False
]
Run Code Online (Sandbox Code Playgroud)

currentsolution

这种方法的一个缺点是,如果我们改变绘图的范围,那么我们需要重新计算文本的坐标,以便将其保持在我们想要的位置(相对于整个图像).

编辑:

尝试将TextA放在情节之外. …

wolfram-mathematica

5
推荐指数
1
解决办法
1万
查看次数

优化Mathematica生成的eps/pdf文件的大小

如何优化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.

pdf wolfram-mathematica export eps figure

5
推荐指数
1
解决办法
6783
查看次数