我可以绘制对应于隐式方程的曲线:
ContourPlot[x^2 + (2 y)^2 == 1, {x, -1, 1}, {y, -1, 1}]
但我找不到根据点的位置给轮廓线着色的方法。更准确地说,我想根据x²+y²< 2<是不是。
我查看了ColorFunction,但这仅用于着色轮廓线之间的区域。 而且我无法让ContourStyle接受依赖于位置的表达式。
答案 0 :(得分:7)
你可以使用RegionFunction
将情节分成两部分:
Show[{
ContourPlot[x^2 + (2 y)^2 == 1, {x, -1, 1}, {y, -1, 1},
RegionFunction -> Function[{x, y, z}, x^2 + y^2 < .5],
ContourStyle -> Red],
ContourPlot[x^2 + (2 y)^2 == 1, {x, -1, 1}, {y, -1, 1},
RegionFunction -> Function[{x, y, z}, x^2 + y^2 >= .5],
ContourStyle -> Green]
}]
答案 1 :(得分:6)
也许是这样的
pl = ContourPlot[x^2 + (2 y)^2 == 1, {x, -1, 1}, {y, -1, 1}]
points = pl[[1, 1]];
colorf[{x_, y_}] := ColorData["Rainbow"][Rescale[x, {-1, 1}]]
pl /. {Line[a_] :> {Line[a, VertexColors -> colorf /@ points[[a]]]}}
产生
答案 2 :(得分:1)
这并不能直接解决您的问题,但我认为这是有意义的。
可以使用我认为是未记录的格式(即围绕ContourPlot
对象的Function
)从Line
内逐渐着色线。在内部,这类似于Heike
所做的,但她的解决方案使用顶点数来找到匹配的坐标,允许按空间位置进行样式化,而不是沿着线的位置。
ContourPlot[
x^2 + (2 y)^2 == 1, {x, -1, 1}, {y, -1, 1},
BaseStyle -> {12, Thickness[0.01]},
ContourStyle ->
(Line[#, VertexColors -> ColorData["DeepSeaColors"] /@ Rescale@#] & @@ # &)
]
答案 3 :(得分:0)
对于一些不太熟练的人来说,信息越少越好。浪费时间浏览一种设置轮廓线颜色的方法,直到我偶然进入Roelig的编辑答案。我只需要ContourStyle []。
Show[{ContourPlot[
x^2 + 2 x y Tan[2 # ] - y^2 == 1, {x, -3, 3}, {y, -3.2, 3.2},
ContourStyle -> Green] & /@ Range[-Pi/4, Pi/4, .1]},
Background -> Black]