如果图形是由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]
结合了两者,但我无法弄清楚如何在这里的任何地方插入一个不透明度命令,以便两者都可见。文档说明这些函数接受与Graphics相同的选项(“ReliefPlot具有与Graphics相同的选项,具有以下添加和更改:”),但我不明白如何控制图形......(我可能对图形选项和指令之间的区别感到困惑。)
启蒙 - 不透明度 - 非常欢迎!
编辑:哇,你们比我的Mathematica版本更快 - 谢谢!
答案 0 :(得分:11)
您必须像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]
发出不透明度指令:
*Plot*
通常,在所有PlotStyle
个函数中,您可以根据具体情况使用ColorFunction
或Graphics
来控制不透明度。如果这只是Graphics[{Opacity[0.5], object}]
原语,您可能会执行{{1}}。
答案 1 :(得分:10)
由于ReliefPlot
没有PlotStyle
选项,您可以使用BaseStyle -> Opacity[0.5]
为图形引入透明度。
答案 2 :(得分:10)
另一种方法是使用Image
和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}
]
由于ReliefPlot
也基本上以Graphics
兼容格式返回像素数据,因此Image
可能更适合您。
ReliefImage
的默认颜色功能不同:您可以使用ColorFunction -> "LakeColors"
切换到ReliefPlot
的颜色。
最初我在这里有一个函数从ReliefPlot
中提取栅格数据,但Brett Champion在下面的评论中指出RasterImage
答案 3 :(得分:7)
使用透明度的答案将以非常一般的方式工作,但在这个组合两个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]
答案 4 :(得分:6)
Show[a, {Opacity[0.5],#}& /@ b]