2014-12-04 2 views
1

Я хочу создать сетевой участок дуги. Моя проблема в том, что дуги правильны, как и порядок узлов. Однако размер узлов (градусов) и цветов заливки и границы (vfill, vborder) не соответствует атрибутам вершин.R: Атрибуты вершины не соответствуют именам вершин в графике дуги

Мой файл .gml можно загрузить по адресу https://dl.dropboxusercontent.com/u/42761499/myarc.gml

Код:

library(igraph) 
library(arcdiagram) 
dat.g2 = read.graph("myarc.gml", format = "gml") 
vlabels<-get.vertex.attribute(dat.g2, "name") 
vfill<-get.vertex.attribute(dat.g2, "vfill") 
vborder<-get.vertex.attribute(dat.g2, "vborder") 
vgroups<-get.vertex.attribute(dat.g2, "group") 
degrees<-get.vertex.attribute(dat.g2,"degree") 
edgelist<-get.edgelist(dat.g2) 
values<-as.numeric(get.edge.attribute(dat.g2, "value")) 
par(mai=c(2.25,.25,.25,.25)) 
arc.p<-arcplot(edgelist, cex.labels = 0.8, 
      ordering = vlabels, 
      show.nodes = TRUE, 
      col.nodes = vborder, 
      bg.nodes = vfill, 
      cex.nodes = sqrt(degrees)/20, 
      pch.nodes = 21, 
      lwd.nodes = 2, 
      line = 0.3, 
      col.arcs = hsv(0, 0, 0.1, 0.4), 
      lwd.arcs = sqrt(values)/2, 
      horizontal=TRUE, 
      axes=FALSE) 

В сюжете цвета и размеры узла иногда неправильно. «Другая жалоба» должна быть фиолетовой и CHPAIN желтой. Размеры по крайней мере CHPAIN и CARDOTH ошибочны (CHPAIN больше, чем CARDOTH, см. Myarc.gml). Я думаю, проблема в том, что в списке краев имя каждого узла сначала отображается в несколько ином порядке, чем порядок вершин. По порядку списка краев я имею в виду первый уникальный вид имени узла, когда вы просматриваете строку, затем вниз по столбцу. iethe первые 5 строк списка края гласит:

  • от
  • 1 боль в груди, Мичиган, Калифорния, В. Ф. А. Ф.
  • 2 Боли в груди, Мичиган, Калифорния, В.Ф. обмороки
  • 3 Грудь Боль, MI, CA, В.Ф. SOB
  • 4 Chest Pain, MI, CA, В.Ф. CHPAIN
  • 5 Chest Pain, MI, CA, В. Ф. CARDOTH

так е dge list order - «Боль в грудной клетке, MI, CA, VF», «AF», «Syncope», «SOB», «CHPAIN», «CARDOTH» ... Порядок вершин: «Боль в груди, MI, CA, VF "," AF "," Syncope "," SOB "," Другие жалобы "," CHPAIN "...

Как получить атрибуты вершин (vfill, vborder, degrees) для соответствия вершине имена на графике?

+0

Параметр 'arcdiagram' пакет здесь: https://github.com/gastonstat/arcdiagram В случае, если кто-то спрашивает .... –

ответ

2

Вам просто нужно явно указать параметр vertices=. Именно так функция знает, какие значения сохраняются для каждого из назначенных свойств *.nodes. Вы можете использовать это вместо параметра ordering=, который вы установили, так как вы не переупорядочиваете узлы вообще.

arc.p<-arcplot(edgelist, vlabels, cex.labels = 0.8, 
    show.nodes = TRUE, 
    col.nodes = vborder, 
    bg.nodes = vfill, 
    cex.nodes = sqrt(degrees)/20, 
    pch.nodes = 21, 
    lwd.nodes = 2, 
    line = 0.3, 
    col.arcs = hsv(0, 0, 0.1, 0.4), 
    lwd.arcs = sqrt(values)/2, 
    horizontal=TRUE, 
    axes=FALSE) 

enter image description here

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