ContourPlot:造型轮廓线

时间:2012-01-22 17:38:21

标签: wolfram-mathematica

我可以绘制对应于隐式方程的曲线:

ContourPlot[x^2 + (2 y)^2 == 1, {x, -1, 1}, {y, -1, 1}]

但我找不到根据点的位置给轮廓线着色的方法。更准确地说,我想根据x²+y²< 2<是不是。

我查看了ColorFunction,但这仅用于着色轮廓线之间的区域。 而且我无法让ContourStyle接受依赖于位置的表达式。

4 个答案:

答案 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]
}]

Mathematica graphics

答案 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]]]}}

产生

Mathematica graphics

答案 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@#] & @@ # &)
]

Mathematica graphics

答案 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]