2016-11-04 5 views
1

Мой двоичный граф основан на эггелисте. Каждая вершина является тикер на фондовых рынках (например: BARC = Барклая)Невозможно построить сеть на igraph

net_full_phase1=graph.edgelist(full_phase1, directed=FALSE) 
V(net_full_phase1)$color=V(net_full_phase1)$name 
V(net_full_phase1)$size=degree(net_full_phase1) 
V(net_full_phase1)$color=gsub("BARC", "slategrey", V(net_full_phase1)$color) 
V(net_full_phase1)$color=gsub("BNP", "blue", V(net_full_phase1)$color) 
V(net_full_phase1)$color=gsub("CBK", "black", V(net_full_phase1)$color) 
V(net_full_phase1)$color=gsub("WFC", "red", V(net_full_phase1)$color) 
V(net_full_phase1)$color=gsub("BKIR", "orange", V(net_full_phase1)$color) 
V(net_full_phase1)$color=gsub("ISP", "purple", V(net_full_phase1)$color) 
V(net_full_phase1)$color=gsub("TPEIR", "lightblue", V(net_full_phase1)$color) 
V(net_full_phase1)$color=gsub("SAB", "yellow", V(net_full_phase1)$color) 
V(net_full_phase1)$color=gsub("BCP", "green", V(net_full_phase1)$color) 

plot(net_full_phase1, layout=layout.fruchterman.reingold) 

Я получаю эту ошибку:

Ошибка в символах (х = COORDS [, 1], у = COORDS [, 2], Б.Г. = vertex.color,: incorrecte Nom-де-Колор 'WFred'

Просто побежал unique(as.character(V(net_full_phase1)$name)) вот результат:

"BARC" "WFC" "ISP" "TPEIR" "BCP" "SAB" "BNP" "CBK" "BKIR" 

Я побежал: table(V(net_full_phase1)$color) с результатом:

black blue BredP green lightblue purple red redIR slategrey WFred yellow 

Почему R не рассматривает некоторые цвета, как "BredP", "REDIR", "WFred"?

+1

Я думаю, что это говорит вам, что 'GSUB (» WFC "," red ", V (net_full_phase1) $ color)' не оценивает допустимый цвет ... как-то, не очевидный для меня. Я начал бы запускать этот фрагмент кода самостоятельно, возможно, завернутый в 'table()'. – Frank

+0

или расширение предложения Frank, после запуска всех gsub взгляните на таблицу (таблица V (net_full_phase1) $ color) '. Каковы цвета? – user20650

+0

Я могу запустить код без спецификации цвета. Как только я закодирую цвет, он не работает. Просто побежал таблицу (V (net_full_phase1) $ цвет) вот результат: черный синий BredP зеленый Lightblue фиолетовый красный REDIR slategrey UredG WFred желтые – user123456

ответ

1

Я предполагаю, что что-то пошло не так с вашим использованием gsub. Ниже я подхожу к этому.

# Your vector of unique names 
nms <- c("BARC", "WFC", "ISP" ,"TPEIR" ,"BCP" ,"SAB" ,"BNP", "CBK" ,"BKIR") 

Создать небольшой граф с одинаковыми именами вершин, как в вашем примере

library(igraph) 
g <- random.graph.game(length(nms), 0.5) 
V(g)$name <- nms 

Создание таблицы поиска, чтобы соответствовать имена цветов: это присваивает цвета уникальные имена вершин

lookup <- setNames(
    c("slategrey", "red", "purple", "lightblue", "green", "yellow", "blue", "black", "orange"), 
    nms) 

# have a look at object 
lookup 
#  BARC   WFC   ISP  TPEIR   BCP 
# "slategrey"  "red" "purple" "lightblue"  "green" 
#   SAB   BNP   CBK  BKIR 
# "yellow"  "blue"  "black" "orange" 

Затем мы можем использовать подмножество ([), чтобы присвоить их атрибуту цвета вершин

V(g)$color <- lookup[V(g)$name] 
# have a look at what is produced 
V(g)$color 
# [1] "slategrey" "red"  "purple" "lightblue" "green"  
# [6] "yellow" "blue"  "black"  "orange" 

Который производит

enter image description here


PS, я не могу воспроизвести ваш gsub результат: код работает нормально

# Your vector of unique names 
nms <- c("BARC", "WFC", "ISP" ,"TPEIR" ,"BCP" ,"SAB" ,"BNP", "CBK" ,"BKIR") 

nms = gsub("BARC", "slategrey", nms) 
nms = gsub("BNP", "blue", nms) 
nms = gsub("CBK", "black", nms) 
nms = gsub("WFC", "red", nms) 
nms = gsub("BKIR", "orange", nms) 
nms = gsub("ISP", "purple", nms) 
nms = gsub("TPEIR", "lightblue", nms) 
nms = gsub("SAB", "yellow", nms) 
nms = gsub("BCP", "green", nms) 

# look at result 
nms 
# [1] "slategrey" "red"  "purple" "lightblue" "green"  "yellow" "blue"  
# [8] "black"  "orange" 
+1

Вот код, который я изменил, основываясь на вашем ответе. # full_phase1 является edgelist # net_full_phase1 = graph.edgelist (full_phase1, направленная = FALSE) В (net_full_phase1) $ = размер степени (net_full_phase1) имена <-c ("BARC", "BNP", "СВК" , «WFC», «BKIR», «UCG», «TPEIR», «SAB», «BCP») поиск <- setNames (c ("slategrey", "pink", "black", "red", " «желтый», «зеленый»), имена) V (net_full_phase1) $ color <- lookup [names] V (net_full_phase1) $ color участок (net_full_phase1, layout = layout.fruchterman.reingold) – user123456

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