SliceDensityPlot3D认不得“有名”的ColorFunction
mathematica吧
全部回复
仅看楼主
吧务
level 15
xzcyr 楼主
近期发现的bug一个(已返馈给WRI),行为太诡异了,姑且发一帖说说:
f1 = Function[f, If[f > 1/2, Red, Blue]];
f2 = (If[# > 1/2, Red, Blue] &);
SliceDensityPlot3D[Sin[π x], "BackPlanes", {z, -2, 2}, {y, -2, 2}, {x, -2, 2}, ColorFunction -> #] & /@ {f1, f2}
是的你没看错,SliceDensityPlot3D仅识别出了以 # 号表示的纯函数,而对等效的“有名字”的纯函数无动于衷……
2023年06月03日 15点06分 1
吧务
level 10
看了一下,这个问题源于ContourPlot3D
2023年06月03日 17点06分 2
吧务
level 10
复现:
ContourPlot3D[(x + 2) (y + 2) (z + 2) == 0, {x, -2, 2}, {y, -2,
2}, {z, -2, 2},
ColorFunction -> {Function[a, If[a > 1/2, Red, Blue]], Sin@#3 &}]
2023年06月03日 18点06分 3
另外注意到,若使用单元素的ColorFunction用法,则无此问题,说明它懂得转换用户的输入,但在Slice版本传入时,传入的是双元素的,不触发转化规则。
2023年06月03日 18点06分
1