ContourPlot: стилизация контурных линий - PullRequest
2 голосов
/ 22 января 2012

Я могу построить кривую, соответствующую неявному уравнению:

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

Но я не могу найти способ закрасить контурную линию в зависимости от местоположения точки.Точнее, я хочу раскрасить кривую в 2 цвета, в зависимости от того, x² + y²

Я посмотрел в ColorFunction, но это только для окрашивания области между контурными линиями.И я не смог заставить ContourStyle принять выражение, зависящее от местоположения.

Ответы [ 4 ]

7 голосов
/ 22 января 2012

Вы можете использовать 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

6 голосов
/ 23 января 2012

Может быть, что-то вроде этого

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

1 голос
/ 23 января 2012

Это не дает прямого решения вашего вопроса, но я считаю, что он представляет интерес.

Можно постепенно окрашивать линию изнутри 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

0 голосов
/ 14 марта 2014

Для некоторых из менее опытных, меньше информации, тем больше. Время было потрачено впустую на поиск способа установить цвет контурных линий, пока я не наткнулся на отредактированный ответ Релига. Мне просто нужно 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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...