2014-11-18 3 views
3

Я пытаюсь изменить цвет вершин в графике, образованном графиком. Чтобы быть более конкретным, у меня есть граф узлов 95, созданный из матрицы смежности, и я хотел бы покрасить их в соответствии с их степенью/межсоединением/собственной ценностью/близостью, но я предполагаю, что после того, как я знаю, как это сделать с помощью одного , Я смогу сделать это с другими.Раскрашивание вершин в соответствии с их центральностью

Так я закодировал основу генерации графа до сих пор:

< набора данных - read.csv ("~/Google Drive/Cours M2/Сеть Экономика/Data/Collabs_2013.csv", сентябрь = ";")
матрица < -as.matrix (набор данных)
прил < -graph.adjacency (матрица)
участок (прил)
кстати < -betweenness (прил, направленная = FALSE)

Теперь у меня есть вектор 95 значений междоузлий, и я хотел бы построить график с градиентом цветов, который следует за значениями междоузлия (например, от красного для самого низкого значения до зеленого до самого высокого). Я предполагаю, что мне нужно испортить атрибуты вершин, но я понятия не имею, как вводить вектор в качестве атрибута цвета.

+2

Проходят значения 'vertex.color' например. 'plot (adj, vertex.color = rainbow (betweenness (g), start = 0, end = 2/6))'. См. '? Igraph.plotting' для дополнительных опций сюжета – user20650

+0

. Обратите внимание, что если у вас есть последовательность, подобная 1, 10, 9001 в промежутке, это назначит им 3 цвета, одинаково удаленные друг от друга. – OganM

+0

Спасибо, отлично работает! –

ответ

4

Похоже, вы уже выполнили большую часть работы. Все, что вам нужно знать, это colorRamppalette и установка vertex.color для сети. Предполагая, что вы должны изменить цвета линейно,

вобще

fine = 500 # this will adjust the resolving power. 
pal = colorRampPalette(c('red','green')) 

#this gives you the colors you want for every point 
graphCol = palette(fine)[as.numeric(cut(btw,breaks = fine))] 

# now you just need to plot it with those colors 
plot(adj, vertex.color=graphCol) 

кредиты this. Я использовал гораздо более неэффективный метод, чтобы назначить цвета перед ответом на это.

2

Только примечание:

Это может быть проблематично определить

palette = colorRampPalette(c('blue','green')) 

как функция «палитра», также используется igraph, и поэтому igraph позже производит как ошибка.

См проблема Color pallette for vertices in igraph network in R

+0

Релевантно: https://github.com/igraph/rigraph/issues/252 – OganM

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