
上一篇文章里,我们介绍了RegionPlot的两个选项(AspectRatio、Boundary--Style)。
本文,要再介绍另外两个选项:ColorFunction、ColorFunctionScaling。
分别用x和y的值来控制区域的颜色:
RegionPlot[Sin[x^2] Sin[y^2] > 1/10, {x, -5, 5}, {y, -5, 5}, ColorFunction -> Function[{x, y}, Hue[x]]]
和
RegionPlot[Sin[x^2] Sin[y^2] > 1/10, {x, -5, 5}, {y, -5, 5}, ColorFunction -> Function[{x, y}, Hue[y]]]
给区域涂上“彩虹”色(Rainbow):
RegionPlot[Sin[x] Sin[x y] > 1/10, {x, -5, 5}, {y, -5, 5},
ColorFunction -> "Rainbow"]
换成“绿色粉红色调”:
RegionPlot[Sin[x] Sin[x y] > 1/10, {x, -5, 5}, {y, -5, 5},
ColorFunction -> "GreenPinkTones"]
像"GreenPinkTones"、"Rainbow"这样现成的染色方案还有许多,如下图所示。
如果ColorFunction和PlotStyle都“限制”区域的颜色,就以ColorFunction为优先!
RegionPlot[Sin[x y] Sin[x^2 + y^2] > 1/10, {x, -5, 5}, {y, -5, 5},
ColorFunction -> "BrightBands",
PlotStyle -> Directive[Opacity[0.5], Red]]
不过MeshShading的优先级要高于ColorFunction:
RegionPlot[Sin[2 x] Sin[3 y] > 1/20, {x, -5, 5}, {y, -5, 5},
Mesh -> 30, MeshShading -> {{Green, Automatic}, {Automatic, Red}},
ColorFunction -> "NeonColors"]
ColorFunctionScaling的作用是,指定供给一个颜色函数的自变量,看是否应当将尺度按比例缩放到 0 和 1 之间。
当ColorFunctionScaling->False时:
RegionPlot[Sin[x y] Sin[x + y] > 1/10, {x, -5, 5}, {y, -5, 5},
ColorFunction ->
Function[{x, y}, ColorData["SolarColors"][Sin[x] Sin[y]]],
ColorFunctionScaling -> False]
当ColorFunctionScaling->True,跟没有这个选项几乎是相同的效果:
RegionPlot[Sin[x y] Sin[x + y] > 1/10, {x, -5, 5}, {y, -5, 5},
ColorFunction ->
Function[{x, y}, ColorData["SolarColors"][Sin[x] Sin[y]]],
ColorFunctionScaling -> True]
和
RegionPlot[Sin[x y] Sin[x + y] > 1/10, {x, -5, 5}, {y, -5, 5},
ColorFunction ->
Function[{x, y}, ColorData["SolarColors"][Sin[x] Sin[y]]]]
再来一个具体的例子:
RegionPlot[Sin[x] Sin[y] > 1/10000, {x, -5, 5}, {y, -5, 5}, ColorFunction -> Function[{x, y}, ColorData["BlueGreenYellow"][Sin[x] Sin[y]]], ColorFunctionScaling -> False]
