1) Я пытаюсь отобразить легенду для сетевого графика igraph для размера вершины, для которого был задан вес, и для толщины края, который также был установлен для веса. Я попытался использовать базовую легенду R для размера вершины, но она получается невероятно насыщенной и нечитаемой независимо от того, сколько настроек я делаю. В настоящее время, используя легенду base r, я вручную устанавливаю размер узла, который технически искажает данные на графике. Я понятия не имею, как создать легенду ширины края. Я хочу, чтобы размер узла равнялся общему количеству публикаций из списка узлов, а размер ребра соответствовал общим публикациям из списка ребер.
2) Второе, что я хочу сделать, - это изменить размер вершины. Большие вершины слишком велики, что делает маленькие вершины почти невидимыми. Если я просто изменю масштаб, все маленькие станут еще меньше - почти невидимыми. Есть ли способ установить максимальный диаметр для больших вершин, чтобы вы могли видеть маленькие точки, в то время как большие вершины не слишком мощные?
3) Третье, что я хочу сделать, это создать то же самое изображение, но только показать имена тех из определенных отделов. Например, в моем блоке данных nodeds я хочу, чтобы на приведенном ниже графике отображались только фамилии тех, кто находится в отделе «Рак». Проблема, с которой я сталкиваюсь, заключается в том, что переменная Department находится в кадре данных узлов, а не в net tbl_graph ().
Я знаю, что это много! Я потратил около 2 недель на это, поэтому любая помощь по любому из этих трех пунктов очень ценится. Приоритет определенно легенда.
net <- igraph::graph_from_data_frame(d=edges, vertices=nodes, directed=T)
V(net)$size <- V(net)$Total_Publications/5
size <- V(net)$Total_Publications/5
#create Edge size
E(net)$width <- E(net)$Shared_Publications/5
#simple
net <- simplify(net, remove.multiple = F, remove.loops=T)
#Set layouts
nice <- layout_nicely(net)
nice_scaled <- norm_coords(nice, ymin = 0, ymax = .5, xmin = -1, xmax=.8)
#Set node size for scale manually which misrepresents data
size_nodes <- c(5, 45, 95, 145, 195)
sizenodesScale <- size_nodes
#PlotNet
plot(net, edge.arrow.size=0,
edge.curved=.5,
rescale=F,
layout=nice_scaled/5,
vertex.label.cex=.8,
vertex.label.family="Helvetica",
vertex.label.color="black",
vertex.label.font=2,
vertex.size=size,
main="Collaboration",
vertex.color = "lightgray",
vertex.frame.color="black",
vertex.shape="circle",
vertex.label.dist=2,
#vertex.size = net_size,
edge.color="royalblue")
#add legend manually: very squished and unreadable
legend("topleft", legend=size_nodes, pt.cex=sizenodesScale/19, col='black',pch=21,pt.bg="lightgray", cex=1.7, y.intersp = 2.5, x.intersp=1.7, horiz=TRUE)