- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
似乎使用 mma 创建具有出版质量的图形是一种可以追溯到几十年前的黑色艺术。尽管近年来情况有了很大改善,但在导出到文件时仍然很难获得一致的结果。最终结果看起来有点依赖格式(根据我的经验,EPS 效果最好)。
很多时候,帧和刻度线中的线条最终在 EPS 文件中过于模糊,当尝试执行类似 FrameStyle->AbsoluteThickness[2]
的操作时,很容易得到太粗的线条。因此,我目前的方法涉及采用五个参数——三个线条粗细(在 FrameStyle、AxesStyle 和 PlotStyle 中)、ImageSize 和 BaseStyle 中的 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", %]
FontFamily -> Helvetica
的功劳对比
FontFamily -> "Helvetica"
行为(这似乎是一个错误)。如果没有引号,由于字体搞砸了,PDF 导出就无法启动。
最佳答案
屏幕与打印查看
很难比较屏幕上的线条粗细,尤其是当显示的粗细接近 1 像素时。我发现最好以最终出版物尺寸打印图形,并以这种方式检查它们的质量。
使用绝对测量
我遇到的大多数问题都源于 Mathematica 使用绝对和相对(相对于绘图大小)测量。对于将出现在打印中的图形,最简单的方法是使用不随绘图缩放的绝对大小,特别是对于字体大小和线条粗细。通过这种方式,您可以很好地了解打印结果的外观(并且与图形大小无关)。您提供给 Mathematica 的数字是打印机的点数。
导出
最后,我发现导出到 EPS 不如导出到 PDF 可靠(例如,字体可能没有嵌入,正如您所提到的),并且 Mathematica 在导出到 EPS 时无法保留所有功能(例如不透明度!)。对于 2D 绘图,PDF 通常是一个不错的选择。但是,在导出 PDF 并在 Export 中指定 ImageSize 时存在错误。我使用的解决方法是
cm = 72/2.54 (* centimetres *)
Export["figure.pdf", Show[figure, ImageSize -> 7 cm]] (* 7 cm wide figure *)
关于wolfram-mathematica - 为出版物导出图形 : how to achieve consistent line thicknesses in plot elements?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5931479/
我记得 WRI 的某个人在 official newsgroup 中说出于兼容性目的,Mathematica 7 仍然有一个来自 Mathematica 5 的老式 Mathematica 帮助浏览器
除非巫师先生在度假,否则很难击败这种似乎具有无所不在和无所不知的现象。我们如何使用 Mathematica 和 StackOverflow API 超越他? 最佳答案 这是 Sjoerd 解决方案的一
您好,我无法理解以下函数的输出。 ListPointPlot3D[Table[Sin[x^2 + y], {x, 0, 3, 0.15}, {y, 0, 3
我在图形中显示了一组点: alt text http://img69.imageshack.us/img69/874/plc1k1lrqynuyshgrdegvfy.jpg 我想知道是否有任何命令可以
让 S是具有唯一元素的向量,并且 s它的一个子集,也有独特的元素;例如,S={1,2,3,4,5,6}和 s={1,3,4,6} .现在给出另一个向量 c={7,8,9,7} ,如何创建矢量 C=[7
我想知道如果给定多个替换规则,mma 如何确定在发生碰撞时首先应用哪个规则。一个例子是: x^3 + x^2*s + x^3*s^2 + s x /. {x -> 0, x^_?OddQ -> 2}
在mathematica 中(我使用的是 mma 5.0(猜猜很老)),如果我将以下内容作为一行输入: Needs["Graphics`Master`"]; Animate[Plot[Sin[n x]
如果我有一个字母表,假设 sigma = {1,2,3,4,a,b,c,d,e,f,g} 并且想要生成所有长度为 n 的单词,有没有办法做到这一点? 我可以做 Flatten[Outer[Functi
生成参数列表的素数列表的最简单函数是什么?想出这样的函数并不难,比如: foo[n_] := Block[{A = {}, p = 2}, While[p All] 关于wol
在此示例中,将函数定义为“functionB”时,这是一个奇怪的结果。有人可以解释吗?我想绘制functionB[x]和functionB[Sqrt[x]],它们必须不同,但是此代码显示functio
如何在 Mathematica 中对列表进行数值微分而不先将其拟合为数学表达式(即使用 FindFit )? 具体来说,我想在列表中找到最大斜率的点。 我已经考虑使用 Differences并找到最大
我正在寻找 Mathematica 中原子对象的完整列表(其中 AtomQ 产生 True)。 我知道 Symbol String Integer Real Rational Complex Spar
最近发现了一些old post在 MathGroup 上使用未记录的命令行选项 -batchinput和 -batchoutput显示: If test.mma contains the follo
Mathematica 似乎缺少此功能,或者无论如何我都找不到它。 Series function 可以对多个变量进行连续扩展,但它似乎无法进行完整的多元扩展。 有谁知道如何做到这一点? 谢谢 最佳答
我有兴趣运行相同的函数,该函数以并行方式在多核上使用不同的参数值进行一些蒙特卡罗评估。我还想确保整个函数在同一个内核上运行,而函数内的计算不会跨内核分布。例如,假设我有一个函数(故意简化) f[a_,
我怎样才能从 Range[96] 中不重复地获得 48 个随机对的两个不同元素?即 96 个元素只使用一次。 当我尝试将元组/子集与 Select 结合使用时,我觉得必须有一种更直接的方法来实现这一点
我正在评估 Wolfram Mathematica 8 的大学类(class)项目。 我很难定义目标编程模型。 首先是因为我在数学方面真的很匮乏 :) 其次,因为我在 official documen
我开发了一些代码来从 LogNormalDistribution 和 StableDistribution 的乘积生成随机变量: LNStableRV[{\[Alpha]_, \[Beta]_, \[
我有一个想要优化的字符串验证函数。该字符串的长度为 2n,由 0 和 1 组成,例如 str="100001"。我想测试一下: 1) 字符串中奇数索引位置的 1 的数量(必须不少于 1)是否等于偶数索
请考虑: Function[subID, pointSO[subID] = RandomInteger[{1, 4}, {5, 2}]] /@ {"subA", "subB"}; M
我是一名优秀的程序员,十分优秀!