Mathematica, модифицирующий список переходов - PullRequest
2 голосов
/ 26 марта 2012

Причина, по которой Google не предоставил мне ответ, заключается в том, что в этом случае я не знаю правильного названия элементов списка (*). Здесь у меня есть некоторые входные данные:

edges = ReadList["some\\external\\data\\source\\1"]
 (* edges = { 0 -> 1, 1 -> 2, 2 -> 3 } *)

labels = ReadList["some\\external\\data\\source\\2"]
 (* labels = { 0 -> A, 1 -> B, 2 -> A, 3 -> B } *)

Я хочу создать новый список стилей из ярлыков с замененными A до Красный и B Зеленый , чтобы я мог получить:

styles = { 0 -> Red, 1 -> Green, 2 -> Red, 3 -> Green }

Я использую его для рисования графика:

Graph [ edges, VertexLabels -> labels, VertexStyle -> styles ]

(*) попробовал список пар, список переходов, список ребер, но обнаружил, что оператор RightArrow имеет общее значение ...

Ответы [ 2 ]

3 голосов
/ 26 марта 2012

Я думаю, вы хотите это:

edges = {0 -> 1, 1 -> 2, 2 -> 3}

labels = {0 -> A, 1 -> B, 2 -> A, 3 -> B}
styles = labels /. {A -> Red, B -> Green}
Graph[edges, VertexLabels -> labels, VertexStyle -> styles]

enter image description here

0 голосов
/ 26 марта 2012

Как насчет того, чтобы начать с "базы данных":

edges[0] = 1; edges[1] = 2; edges[2] = 3;
labels[0] = "A"; labels[1] = "B"; labels[2] = "A"; labels[3] = "B";

, а затем некоторые правила замены:

s["A"] = "Red"; s["B"] = "Green";

, которая позволяет определить новую функцию labels:

styles[e_] := s[labels[e]]

, что дает

In[9]:= Table[styles[i], {i, 0, 3}]

Out[9]= {"Red", "Green", "Red", "Green"}

и т. Д. *

...