【求助】画图的数值问题。请问怎么让Plot3D或者等高线co
mathematica吧
全部回复
仅看楼主
level 6
光的暗礁 楼主
【求助】画图的数值问题。
请问怎么让Plot3D或者等高线contourplot作出的图使固定颜色对应固定数值呢?并且这个标准适用每一张图。plotlegends只能在每张图的旁边加一个色彩棒,但并不是让所有图处于同一标准之下。
2021年01月14日 03点01分 1
level 6
光的暗礁 楼主
向各位大佬求助,谢谢了。
2021年01月14日 03点01分 2
level 9
试一试ContourShading或者MeshShading
上述两者在帮助文档中有示例
2021年01月14日 08点01分 3
前者的话,我也试过。但是等高线要和三维图颜色对应,所以三维图也必须是同数值同颜色😂,这个Counter shading办不到啊。
2021年01月14日 10点01分
后者的话我输入了一下结果mathematic是红色,大概是并没有更新到有这个函数的版本。
2021年01月14日 10点01分
刚才又试了下counter shading,完全是无论输入什么颜色,都变成白色😂。
2021年01月14日 11点01分
我也试试更新版本吧,谢谢大佬。
2021年01月14日 11点01分
吧务
level 12
自己写一个ColorFunction, 然后ColorFunctionScaling -> False就可以了
2021年01月14日 11点01分 4
请问在这句里要怎样加ColorData 中的颜色? ColorFunction -> Function [{x, y, z}, Hue[z]], ColorFunctionScaling -> False, 如下的不行 ColorFunction -> (Function [{x, y, z}, Hue[z]] ColorData[ "TemperatureMap"] &), ColorFunctionScaling -> False,
2021年01月20日 12点01分
而这个 ColorFunction -> (ColorData["TemperatureMap"][ Plot3D颜色变化不在Z轴分布[] Rescale[#, {-1, 1}, {0, 1}]] &),
2021年01月20日 12点01分
上面一条错了 ColorFunction -> (ColorData["TemperatureMap"][ Rescale[#, {-1, 1}, {0, 1}]] &),
2021年01月20日 12点01分
吧务
level 12
Plot3D的ColorFunction有三个变量,如果想让颜色按照Z轴变化,写法是
ColorFunction -> Function[{x, y, z}, ColorData["TemperatureMap"][Rescale[z, {-1, 1}, {0, 1}]]]
或简写成
ColorFunction -> (ColorData["TemperatureMap"][Rescale[#3, {-1, 1}, {0, 1}]] &)
其中#3对应z,而
#1和#
2分别对应x、y
ContourPlot的ColorFunction则只有一个变量,直接写
ColorFunction -> Function[z, ColorData["TemperatureMap"][Rescale[z, {-1, 1}, {0, 1}]]]
或
ColorFunction -> (ColorData["TemperatureMap"][Rescale[#, {-1, 1}, {0, 1}]] &)
即可
一个也许是你想要的例子:不同图使用同一颜色标准Table[ContourPlot[Sin[x + y^2]/2 - dz, {x, -3, 3}, {y, -2, 2},
Contours -> 20,
ColorFunction -> (ColorData["TemperatureMap"][
Rescale[#, {-1, 1}, {0, 1}]] &), ColorFunctionScaling -> False,
ImageSize -> 300], {dz, -0.5, 0.5, 0.2}] // GraphicsRow
2021年01月20日 15点01分 5
谢谢大佬,那个3#其实我改过,但是改了之后红蓝等色彩的渐变就变得只有黄色的一点渐变了。确实按Z轴分布,但是几乎看不出渐变[泪]。
2021年01月20日 16点01分
我又改了下#后的两个括号内的数字就能显示全了,谢谢大佬。
2021年01月21日 04点01分
但是还有一个小问题想请教大佬,怎样使等高线和Plot3D在数值相等的情况下颜色分布一致呢?当两者#后括号内的数字一样时,输出的颜色分布却不一样,分别调整后,两者输出图的颜色分布接近了,但不完全一致,请问怎样设置能使Plot3D和对应等高线的颜色分布完全一致呢?
2021年01月21日 04点01分
@光的暗礁 不是很能理解你的问题,建议发个代码上来展示下“输出的颜色分布却不一样”具体是什么样子,以及你需要的“颜色分布完全一致”是什么效果
2021年01月21日 10点01分
level 6
光的暗礁 楼主
2021年01月22日 08点01分 6
可以3D与等高线在看出同数值下颜色分布并不一致,分别调整Plot3D中和Conterplot中的WVMN的值(此时两方的WVMN值不再相同)令它们的颜色分布接近,但请问如何才能使颜色分布在完全一致呢?
2021年01月22日 08点01分
level 6
光的暗礁 楼主
2021年01月22日 09点01分 7
调整数值后
2021年01月22日 09点01分
吧务
level 12
放代码,不要只放图
{
Plot3D[
Cos[4 \[Pi] (x^2 + y^2)] Exp[1 - x^2 - y^2], {x, -1, 1}, {y, -1,
1}, Mesh -> None,
ColorFunction -> (ColorData["TemperatureMap"][
Rescale[#3, {-1, 1}, {0, 1}]] &),
ColorFunctionScaling -> False, ImageSize -> 300, ViewPoint -> Top],
Plot3D[
Cos[4 \[Pi] (x^2 + y^2)] Exp[1 - x^2 - y^2], {x, -1, 1}, {y, -1,
1}, Mesh -> None,
ColorFunction -> (ColorData["TemperatureMap"][
Rescale[#3, {-1, 1}, {0, 1}]] &),
ColorFunctionScaling -> False, ImageSize -> 300, ViewPoint -> Top,
PlotPoints -> 100],
Plot3D[
Cos[4 \[Pi] (x^2 + y^2)] Exp[1 - x^2 - y^2], {x, -1, 1}, {y, -1,
1}, Mesh -> None,
ColorFunction -> (ColorData["TemperatureMap"][
Rescale[#3, {-1, 1}, {0, 1}]] &),
ColorFunctionScaling -> False, ImageSize -> 300, ViewPoint -> Top,
PlotPoints -> 100, Lighting -> {{"Ambient", White}}],
ContourPlot[
Cos[4 \[Pi] (x^2 + y^2)] Exp[1 - x^2 - y^2], {x, -1, 1}, {y, -1,
1}, ContourStyle -> None,
ColorFunction -> (ColorData["TemperatureMap"][
Rescale[#1, {-1, 1}, {0, 1}]] &),
ColorFunctionScaling -> False, ImageSize -> 300, PlotPoints -> 100]
} // GraphicsRow
2021年01月22日 11点01分 8
代码是这个 H = 1/5*Sin[6*Sqrt[x^2 + y^2]]; ContourPlot[H, {y, -4.5, 4.5}, {x, -4.5, 4.5}, PlotRange -> All, AxesLabel -> Automatic, Contours -> 12, ColorFunction -> (ColorData["TemperatureMap"][ Rescale[#, {-1, 1}, {0, 1}]] &)]
2021年01月22日 12点01分
我太粗心了,不对比不知道,我竟然忘在 ContourPlot加ColorFunctionScaling了,大佬连日回复辛苦了,真的谢谢了。
2021年01月22日 12点01分
level 6
光的暗礁 楼主
还有这个
Plot3D[H, {y, -4.5, 4.5}, {x, -4.5, 4.5}, PlotRange -> All,
AxesLabel -> Automatic,
ColorFunction -> (ColorData["TemperatureMap"][
Rescale[#3, {-0.5, 0.4}, {0, 1.5}]] &),
ColorFunctionScaling -> False,
Mesh -> None
3D图里得改成Rescale[#3, {-0.5, 0.4}, {0, 1.5}],不然就如第一张图。
2021年01月22日 12点01分 10
吧务
level 15
……你们到底在干嘛啊,这个问题的正确答案,难道不是
给所有的图都设个一样的 PlotRange (PlotRange -> All 除外) 吗?
2021年02月06日 03点02分 11
1