Раскраска отдельных точек другим цветом в Mathematica - PullRequest
8 голосов
/ 29 октября 2011

Вывод команды Mathematica

ListPointPlot3D[
  Join @@ Table[{x, y, 0}, {x, -6, 6, 1}, {y, -6, 6, 1}], 
  PlotStyle -> PointSize[0.02]]

представляет собой следующее изображение.

enter image description here

Я хочу закрасить точки (0,0) и (1,2) красным цветом.Как мне изменить вышеуказанную команду для этого?

Ответы [ 3 ]

12 голосов
/ 29 октября 2011

Можно использовать опцию ColorFunction для ListPointPlot3D:

color[0, 0, _] = Red;
color[1, 2, _] = Red;
color[_, _, _] = Blue;

ListPointPlot3D[
  Join @@ Table[{x, y, 0}, {x, -6, 6, 1}, {y, -6, 6, 1}], 
  PlotStyle -> PointSize[0.02],
  ColorFunction -> color, ColorFunctionScaling -> False]

two points coloured

Важно включить параметр ColorFunctionScaling -> False, так как в противном случае координаты x , y и z , переданные функции цвета, будут нормализованы в диапазоне от 0 до 1 .

ColorFunction также позволяет нам определять раскраску точек, используя произвольные вычисления, например:

color2[x_, y_, _] /; x^2 + y^2 <= 9 = Red;
color2[x_, y_, _] /; Abs[x] == Abs[y] = Green;
color2[_, _, _] = Blue;

ListPointPlot3D[
  Join @@ Table[{x, y, 0}, {x, -6, 6, 1}, {y, -6, 6, 1}], 
  PlotStyle -> PointSize[0.02],
  ColorFunction -> color2, ColorFunctionScaling -> False]

many points coloured

10 голосов
/ 29 октября 2011

Очень простой и понятный способ:

list = Join @@ Table[{x, y, 0}, {x, -6, 6, 1}, {y, -6, 6, 1}];
pts = {{0, 0, 0}, {1, 2, 0}};

ListPointPlot3D[{Complement[list, pts], pts}, 
 PlotStyle -> PointSize[0.02]]

enter image description here

Конечно, я оставил его без явного указания цветов, потому что следующий цвет по умолчанию - красный. Однако, если вы хотите указать свой собственный, вы можете изменить его немного больше как:

ListPointPlot3D[{Complement[list, pts], pts}, 
 PlotStyle -> {{Green, #}, {Blue, #}} &@PointSize[0.02]]
6 голосов
/ 29 октября 2011

йода показывает прекрасный метод.Однако иногда проще работать непосредственно с графическими примитивами.Вот пример этого, хотя в этом случае я бы выбрал метод йоды.

Graphics3D[{
  PointSize[0.02],
  Point /@ Join @@ Table[{x, y, 0}, {x, -6, 6, 1}, {y, -6, 6, 1}] /. 
    x : _@{1, 2, 0} | _@{0, 0, 0} :> Style[x, Red]
}]
...