DensityPlot3D의 색상 함수가 예상대로 작동하지 않습니다.
DensityPlot3D
출력 의 색상 기능을 설정하여 양수 값은 한 색상으로, 음수 값은 다른 색상으로 색상을 지정하려고합니다. 그러나 제대로 작동하지 않는 것 같습니다. 예를 들어 관련 코드는 다음과 같습니다.
\[CapitalOmega] =
Parallelepiped[{-3, -3, -4}, {{6, 0, 0}, {0, 6, 0}, {0, 0, 8}}];
DensityPlot3D[x*y*z,
{x, y, z} \[Element] \[CapitalOmega],
PerformanceGoal -> "Quality",
PlotRange -> All,
OpacityFunction -> Function[f, If[Abs[f] > 0.4, Abs@Tanh[f], 0]],
PlotLegends -> Automatic,
ImageSize -> Medium,
AxesLabel -> Automatic,
ColorFunction -> Function[f, Which[Sign[f] == 1, Black, Sign[f] == -1, Blue, Sign[f] == 0, Gray]]
]
여기에서 제가 사용하도록 말하는 색상 기능은
Function[f, Which[Sign[f] == 1, Black, Sign[f] == -1, Blue, Sign[f] == 0, Gray]]
따라서 제품의 양수 값을 x*y*z
가져와 검정색으로, 음수 값을 가져와 파란색으로 채색하고 나머지는 모두 회색으로 만듭니다.
이 코드는 자체적으로 실행될 때 다음을 생성합니다.


내가 원하는 것이 아닙니다 :(. 색상 함수의 인수를 오해하고 있습니까? 문서를 읽고 올바르게 사용하고 있다고 생각하지만 그렇지 않은 것 같습니다. 함수도 시도했습니다.
(Which[Sign[#] == -1, Blue, Sign[#] == 0, Gray, Sign[#] == 1,
Black] &)
같은 결과로. OpacityFunction
위의 예제 이미지에서 알 수 있듯이 에도 문제 가 있습니다. 예제 코드의 OpacityFunction은 기본적으로 중앙은 투명하고 큐브의면은 단색 인 이미지를 생성해야하지만, 이미지는 큐브의 모서리가 다음으로 설정되어 있음을 보여줍니다. 0 불투명도. 예 : 점 (-2, -2, -2)는 불투명해야합니다.|Tanh[-8]|~1
위의 예제 함수를 사용하면 실제 함수가 훨씬 더 복잡합니다. 아래에 색상을 지정해야하는 실제 함수의 출력을 첨부하겠습니다.


불투명도 함수를 사용하여 0에 가까운 값을 버리고 흥미로운 비트를 남겨 둡니다.
나는 통찰력에 감사드립니다!
답변
아, 내가 인수를 공급하기 때문에 그것이 실현 ColorFunction
되어 확장 된 플롯 값의 버전. 따라서 플롯에서 보는 값 ColorFunction
은 작동중인 정확한 값이 아닙니다 . 스케일링을 중지하려면 간단히
ColorFunctionScaling-> False
OpacityFunctionScaling -> False
문제가 해결되었습니다.
이제 다음 코드는
DensityPlot3D[x*y*z, {x, y, z} \[Element] \[CapitalOmega],
PerformanceGoal -> "Quality",
PlotRange -> All,
OpacityFunction -> Function[f, If[Abs[f] > 0.5, N[ Abs[Tanh[f]]], 0]],
PlotLegends -> Automatic,
ImageSize -> Medium,
AxesLabel -> Automatic,
ColorFunction -> Function[{f}, If[f > 0, Green, Blue]],
ColorFunctionScaling -> False,
OpacityFunctionScaling -> False
]
이미지를 생성


완벽하게 사용하고 싶은 실제 기능으로 변환됩니다. 알 수 있듯이 x y z 의 양수 값을 가진 영역 은 녹색으로 표시되고 x y z 의 음수 값을 가진 영역 은 파란색으로 표시됩니다. 또한 Opacity도 원하는대로 작동합니다.
이 링크는 내 문제를 해결하는 데 도움이되었습니다.
- ColorFunction 관련 문제
- Plot3D에 대한 조각 별 색 함수
이 답변이 비슷한 문제를 겪고있는 다른 사람들에게 도움이되기를 바랍니다.