2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 [Mathematica] Разукрашенные кривые
Сообщение22.10.2014, 22:46 
Аватара пользователя


29/05/11
227
Красноармейск, Донецкая обл.
Всем радости и счастья!

У меня есть функция, которая каждому аргументу сопосталяет некоторые значения ($n$ штук) и цвета (столько же), причём их можно разделить на две функции, но тогда считаться будет в 1.5-2 раза дольше. Для конкретности, пусть f[x_?NumericQ] возвращает {values, colors} — прямоугольную матрицу $2\times n$.

Хочется нарисовать рисунок, аналогичный Plot[First[f[x]], {x, 0, 1}], но так, чтоб каждая кривая в каждой точке имела соответствующий цвет: в точке x кривая номер k должна проходить через f[x][[1, k]] и иметь цвет f[x][[2, k]].

Я не знаю, располагает ли Plot или List(Line)Plot подобным средством. Скажем, ColorFunction позволяет разукрасить кривые, основываясь на положении (абсциссе и ординате) каждой точки, но тут цвет рассчитывает по-другому.

Или тут нужно только графическими примитивами решать задачу? Если так, то это немного печально, потому что будет много кода и не будет прелести адаптивной сетки Plot.

 Профиль  
                  
 
 Re: [Mathematica] Разукрашенные кривые
Сообщение22.10.2014, 23:48 


08/03/11
186
Может PlotMarkers подойдет?

Код:
points = Table[{x, Cos[x], RandomColor[]}, {x, 0., 4 Pi, Pi/15}];
ListPlot[
Partition[points[[;; , 1 ;; 2]], 2],
Frame -> True,
Axes -> False,
PlotMarkers -> (Style["\[FilledCircle]", 14, #] & /@ points[[;; , 3]])
]

 Профиль  
                  
 
 Re: [Mathematica] Разукрашенные кривые
Сообщение23.10.2014, 00:04 
Аватара пользователя


29/05/11
227
Красноармейск, Донецкая обл.
Врядли.
Как соеденить точки так, чтоб сама линия была окрашена в соответстующие цвета?
В идеале, цвет должен неким плавным образом переходить от точки к точке, но можно и кусочками разукрашивать. Главное, чтобы цвет самой линии менялся.

 Профиль  
                  
 
 Re: [Mathematica] Разукрашенные кривые
Сообщение23.10.2014, 00:45 


08/03/11
186
Еще вариант:

Код:
points = Table[{x, Cos[x], RandomColor[]}, {x, 0., 4 Pi, Pi/5}];
Plot[
Interpolation[points[[;; , 1 ;; 2]]][t],
{t, 0., 4 Pi},
Frame -> True,
Axes -> False,
MeshFunctions -> {#1 &},
Mesh -> {points[[;; , 1]]},
MeshShading -> points[[;; , 3]],
MeshStyle -> Opacity[0.]
]

 Профиль  
                  
 
 Re: [Mathematica] Разукрашенные кривые
Сообщение23.10.2014, 13:23 
Заслуженный участник


25/02/11
1797
Пусть h={values}. Зададим функцию g[{x,y}]=color для {x,y} из values. Тогда
Код:
ColorFunction -> Function[{x, y}, g[Nearest[h, {x, y}][[1]]]
должно сработать.

 Профиль  
                  
 
 Re: [Mathematica] Разукрашенные кривые
Сообщение23.10.2014, 23:34 
Аватара пользователя


29/05/11
227
Красноармейск, Донецкая обл.
Спасибо за предложения.

Я сейчас остановился на таком варианте:
Код:
Apply[Show,
  ListLinePlot[
    #[[All, 1 ;; 2]],
    MeshFunctions -> {#1 &},
    Mesh -> {#[[All, 1]]},
    MeshShading -> (WaveColorScheme /@ #[[All, 3]]),
    MeshStyle -> Opacity[0]] & /@ lines]
Код:
lines = Transpose@Table[{x, #1, #2} & @@@ fs[x], {x, 0, 2, 1/200}];
где fs[x] возвращает список (по числу линий) пар {value, color}.
Таким образом, я сначала дискретизую, затем каждую линию строю методом sithif и соединяю из через Show.

Хотя по-прежнему скучаю по MaxRecursion от Plot, который даже симулировать нельзя в таком подходе с дискретизацией.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group