2012-05-14 3 views
2

Можно ли окрасить ребро графа в Wolfram Mathematica с использованием цветовой функции, которая зависит от координаты на краю? Как и использование опции ColorFunction в Plot [].Раскрашивание краев на графике в Wolfram Mathematica

У меня есть функция, указанная на краю графика, в зависимости от координаты на краю. Возможно ли нарисовать плотность этой функции на краю? Спасибо за ответ.

PS: Первая идея - использовать Inset [] для подключения графического цветного объекта в EdgeRenderingFunction, но это кажется совершенно неестественным. Есть ли какие-либо упрощенные способы?

+0

Просьба выслать ваши вопросы, связанные с ММА, на выделенный сайт [Mathematica-SE] (http://mathematica.stackexchange.com/) для получения более качественных/более быстрых ответов. – kglr

+0

Проблема в том, что функция, которая может использоваться в EdgeShapeFunction/EdgeRenderingFunction, принимает только координаты vetices в качестве аргументов, поэтому мы не можем установить Hue [] в зависимости от координаты на краю. –

ответ

4

Один из способов использования ColorFunction для цветных ребер в графе является:

ClearAll[colorededge]; 
    colorededge[pts_, colorfunc_: Function[{x, y}, ColorData["TemperatureMap"][y]]] := 
    ListPlot[pts, Joined -> True, PlotStyle -> Thick, Axes -> False, 
    ColorFunction -> colorfunc, ColorFunctionScaling -> True]; 
    edgshpfnc = (If[Last[#2] == "B", [email protected][#1], 
    [email protected][#1, Function[{x, y}, Blend[{Yellow, Red}, x]]]] &); 
    Graph[{"A" -> "B", "B" -> "C", "C" -> "A"}, 
    VertexCoordinates -> {"A" -> {0, 0}, "B" -> {1, 1}, "C" -> {2, 0}}, 
    EdgeShapeFunction -> edgshpfnc, VertexLabels -> "Name", ImagePadding -> 10] 

дает

enter image description here

и

GraphPlot[{"A" -> "B", "B" -> "C", "C" -> "A"}, 
EdgeRenderingFunction -> edgshpfnc, VertexLabeling -> True] 

дает

enter image description here

+0

Большое спасибо - это то, что мне нужно. –

+0

@lokislack, мое удовольствие. – kglr

Смежные вопросы