3

我正在尝试将网格线添加到 Mathematica 中的输出密度图。该图是通过 Mathematica 中的长时间计算生成的,当我绘制该图时,我忘记添加 Mesh->True 选项。我不想进行所有计算并再次生成绘图,因为它需要很长时间。是否可以仅使用手头的输出图添加网格线或网格线来绘制?

例如,如果我有一个情节 p。是否可以添加网格线仅操作 p?

在普通的一维图中,这将起作用

p1 = Plot[Sin[x], {x, -3, 3}];

Insert[p1, GridLines -> Automatic, -1]

在此处输入图像描述

但是当我尝试密度图时,似乎网格线总是在图下方,并且只能在图像边缘区域看到。

p2 = DensityPlot[Sin[x + y^2], {x, -3, 3}, {y, -2, 2}, PlotRangePadding -> 0.2];
Insert[p2, GridLines -> Automatic, -1]

在此处输入图像描述

更新数据

输出图上的 Mesh 选项将不起作用,因为 Mesh 不是 Graphics 的选项:

Show[p2,Mesh->True]

将给出一条消息“渲染图形时遇到无法识别的选项名称(网格)”谢谢。

4

2 回答 2

2

最好的方法是通过"GridLinesInFront"方法选项Graphics

DensityPlot[Sin[x + y^2], {x, -3, 3}, {y, -2, 2}, 
 PlotRangePadding -> 0.2, GridLines -> Automatic, 
 Method -> {"GridLinesInFront" -> True}]

在此处输入图像描述

于 2016-11-01T17:56:45.107 回答
1

好的,这是一个可怕的黑客,但它确实有效(至少有时)。这个想法是在密度图中创建一个易于计算但在其他方面类似于您的 p2 的网格,然后提取网格。

Show[p2, Graphics[Cases[DensityPlot[0, {x, -3, 3}, {y, -2, 2}, 
      Evaluate[Sequence @@ Append[Options[p2], Mesh -> True]]][[1]] //
     Normal, _Line, \[Infinity]]]]
于 2012-11-21T05:22:11.147 回答