我正在写一篇关于在Mathematica的3d区域图中实现依赖于场的颜色的问题。
具体来说,我创建了下面的图,其中f [x,y,z]是三维数组的插值函数(这样做可以很容易地得到较低分辨率的图,因为数据量在数组很重要。)
我遇到的问题是,如果我运行以下指令:
RegionPlot3D[f[x, y, z] >= 0.5 && f[x, y, z] <= 0.6, {x, 0, 1}, {y, 0,0.416}, {z, 0, 0.666},
ColorFunction -> Function[{x, y, z}, Hue[Rescale[f[x, y, z], {0, 1}]]]]
颜色没有正确施加(我得到一个颜色均匀的区域)。如果我在Hue中使用函数g(可以是任何函数,例如点位置的范数),那么
Hue[Rescale[g[x, y, z], {0, 1}]]
正确传递颜色信息。我假设我在处理InterpolatingFunction对象时犯了一个错误。该如何处理这个问题?
感谢任何帮助。
答案 0 :(得分:0)
RegionPlot3D
将4个参数传递给ColorFunction
:
尝试此操作(只需将假arg添加到Function
)
RegionPlot3D[f[x, y, z] >= 0.5 && f[x, y, z] <= 0.6, {x, 0, 1}, {y, 0,0.416}, {z, 0, 0.666},
ColorFunction -> Function[{x, y, z, p}, Hue[Rescale[f[x, y, z], {0, 1}]]]]
或者像这样:
RegionPlot3D[f[x, y, z] >= 0.5 && f[x, y, z] <= 0.6, {x, 0, 1}, {y, 0,0.416}, {z, 0, 0.666},
ColorFunction -> ( Hue[Rescale[f[#1, #2, #3 ], {0, 1}]] &)]