cor*_*ion 13 wolfram-mathematica
如果图形是由ReliefPlot或DensityPlot等函数生成的,使用Opacity来控制外观,是否可以在Mathematica中叠加两个或多个图形?
例如:
a = ReliefPlot[
Table[i + Sin[i^2 + j^2], {i, -4, 4, .03}, {j, -4, 4, .03}], ImageSize -> 100]
b = ReliefPlot[
Table[i + Sin[i^3 + j^3], {i, -4, 4, .03}, {j, -4, 4, .03}], ImageSize -> 100]
Show[a,b]
Run Code Online (Sandbox Code Playgroud)

结合这两者,但我无法弄清楚如何在这里任何地方插入一个不透明度命令,以便两者都可见.文档说明这些函数接受与Graphics相同的选项("ReliefPlot具有与Graphics相同的选项,具有以下添加和更改:"),但我不明白如何控制图形......(我可能对图形选项和指令之间的区别感到困惑.)
启蒙 - 不那么透明 - 非常欢迎!
编辑:哇,你们比我的Mathematica版本更快 - 谢谢!
abc*_*bcd 11
您必须发出opacity指令,ColorFunction如下所示:
a = ReliefPlot[
Table[i + Sin[i^2 + j^2], {i, -4, 4, .03}, {j, -4, 4, .03}],
ImageSize -> 100]
b = ReliefPlot[
Table[i + Sin[i^3 + j^3], {i, -4, 4, .03}, {j, -4, 4, .03}],
ImageSize -> 100,
ColorFunction -> (Directive[Opacity[0.5],
ColorData["Rainbow"][#]] &)]
Show[a, b]
Run Code Online (Sandbox Code Playgroud)

通常,在所有*Plot*函数中,您可以使用PlotStyle或ColorFunction根据具体情况控制不透明度.如果这只是一个Graphics原始的,你可能会做类似的事情Graphics[{Opacity[0.5], object}].
Bre*_*ion 10
由于ReliefPlot没有PlotStyle选项,您可以使用BaseStyle -> Opacity[0.5]在图形中引入透明度.

Sza*_*lcs 10
另一种方法是使用Images和ReliefImage函数,然后使用ImageCompose以下方法将结果图像组合在一起:
ImageCompose[
ReliefImage[Table[i + Sin[i^2 + j^2], {i, -4, 4, .03}, {j, -4, 4, .03}]],
{ReliefImage[Table[i + Sin[i^3 + j^3], {i, -4, 4, .03}, {j, -4, 4, .03}]],
0.5}
]
Run Code Online (Sandbox Code Playgroud)

由于ReliefPlot也基本上以兼容的格式返回像素数据Graphics,因此Images可能更适合您.
默认的颜色功能ReliefImage是不同的:您可以使用ColorFunction -> "LakeColors"切换到ReliefPlot的一个.
最初我在这里有一个从中提取栅格数据的函数ReliefPlot,但是Brett Champion RasterImage在下面的评论中指出了
使用透明度的答案将以非常通用的方式工作,但在这个组合两个ReliefPlot []的特定示例中,您可能需要考虑绘制两者的总和:
f[i_] := i + Sin[i^2 + j^2];
g[i_] := i + Sin[i^3 + j^3];
ReliefPlot[Table[f[i] + g[i], {i, -4, 4, .03}, {j, -4, 4, .03}], ImageSize -> 100]
Run Code Online (Sandbox Code Playgroud)