Я пытаюсь представить большую сеть с двумя типами узлов (инвесторы делают инвестиции в компании). Для повышения наглядности я хочу, чтобы цвет края в соответствии с узлом они заканчивающиеся в.R - iGraph не отображается («неверная спецификация RGB»)
edge.end <- get.edges(g, 1:ecount(g))[,1] # g is my igraph element
E(g)$color <- V(g)$color[edge.end] # edge color based on vector color
Это отлично работает и возвращает 32,000+ шестнадцатеричного кода цвета.
[1] "#FFF5F0" "#FFF5F0" "#FFF5F0" ...
Поскольку график сейчас очень переполнен, я хочу, чтобы края были прозрачными на основе их соответствующих размеров инвестиций. Прозрачность должна быть в пределах от 0,5 до 1. Для этого я использую GISTools:
E(g)$color <- add.alpha(E(g)$color, ((0.5*(E(g)$Invested.Amount.in.EUR - min(E(g)$Invested.Amount.in.EUR)))/(max(E(g)$Invested.Amount.in.EUR)-min(E(g)$Invested.Amount.in.EUR)))+0.5)
Это, как представляется, работать и возвращает:
[1] "#FFF5F0BF" "#FFF5F0B3" "#FFF5F099" ...
Однако, когда я сюжет теперь граф со следующим кодом (который прекрасно работал, прежде чем добавить прозрачность)
pdf('all.pdf')
plot(g, layout = layout_with_fr(g, niter = 1000, weights = E(g)$width))
dev.off()
R возвращает следующую ошибку:
Error in plot.xy(xy.coords(x, y), type = type, ...) :
invalid RGB specification
Если я просто переписываю цвет E (g) $, например, «# 63636309», он отлично работает ... Может ли кто-нибудь указать мне в правильном направлении, чтобы исправить это?
спасибо, Jan
Можете ли вы предоставить небольшой фрагмент кода с воспроизводимыми данными? Мне непонятно, какой цвет бросает ошибку. –
Это проблема в пакете GISTools. Я использую теперь пакет весов со следующей формулой 'E (g) $ color <- alpha (E (g) $ color, ((0.8 * (E (g) $ Invested.Amount.in.EUR - min (E (g) $ Invested.Amount.in.EUR)))/(max (E (g) $ Invested.Amount.in.EUR) -min (E (g) $ Invested.Amount.in.EUR))) +0.2) 'и он работает плавно! – JNWHH
Пожалуйста, обратите внимание на отправку ответа на свой комментарий в ответ на ваш вопрос; или рассмотреть вопрос об удалении вашего вопроса. –