Dear community I am using ggraph to plot a network analysis. See part 2 in the working example. Besides different colors for different groups of nodes: --> geom_node_point(aes(size = V(network)$hub_score*200, color= as.factor(V(network)$community))) I additionally want to consider different colors for different edge groups The grouping is defined in the edge_list$relationship: negative relationship = red and positive relationship = darkblue. The code is working in the way that the groups are separated by two colors. However, the code uses not the assigned colors. Does anyone have any idea how to adapt the code? --> geom_edge_arc(curvature=0.3, aes(width=(E(network)$weight/10), color=c("darkblue", "red")[as.factor(edge_list$relationship)], alpha=0.5)) +
Kind regards Sibylle Working example library(circlize) library(ggplot2) library(igraph) library(tidyverse) library(RColorBrewer) library(stringi) library(scico) library(plotly) library(ggraph) edges_table_Test.csv Names target weight relationship B.B A.A 4 pos C.C A.A 5 pos D.D A.A 5 neg E.E A.A 5 neg F.F A.A 1 pos C.C B.B 5 pos E.E B.B 1 pos F.F B.B 2 pos A.A C.C 5 pos B.B C.C 1 pos D.D C.C 5 pos E.E C.C 5 pos F.F C.C 3 pos A.A D.D 5 neg B.B D.D 1 neg C.C D.D 5 neg E.E D.D 5 neg F.F D.D 4 neg A.A E.E 5 neg B.B E.E 1 neg C.C E.E 4 neg D.D E.E 5 neg F.F E.E 5 pos A.A F.F 5 pos B.B F.F 1 pos C.C F.F 2 pos D.D F.F 3 pos E.E F.F 4 pos F.F F.F 5 pos edge_list<-read.csv("edges_table_Test.csv") network <- graph_from_data_frame(aes_collapsed, directed= FALSE, vertices = details) temp<-cluster_optimal(network) temp<-cbind(membership=temp$membership, Names=temp$name) aes_collapsed <- aes_collapsed %>% merge(temp, by="Names") network <- network %>% set_edge_attr(name = "type", value = factor(aes_collapsed$Names, ordered = is.ordered(V(network)$name))) %>% set_edge_attr(name = "membership", value = aes_collapsed$membership) %>% set_edge_attr(name = "color", value = c(viridis::viridis(5)) [match(E(.)$type, c(factor(V(.)$name)))]) %>% set_vertex_attr(name = "trans_v_net", value = c(transitivity(., type = "local"))) %>% set_vertex_attr(name = "hub_score", value = c(hub_score(.)$vector)) %>% set_vertex_attr(name = "color", value = c(viridis::viridis((5))) [match(V(.)$name, c(factor(V(.)$name)))]) %>% set_vertex_attr(name= "community", value=cluster_optimal(.)$membership) clrs<-scico(3, palette = "batlow") ### part 1: network plot par(bg="black") network %>% plot( vertex.color=clrs[V(.)$community], vertex.size=V(.)$hub_score*5, vertex.frame.color=V(.)$color, vertex.label.color="white", vertex.label.cex=0.5, vertex.label.family="Helvetica", vertex.label.font=1, edge.curved=0.5, edge.width= network, layout=layout_with_mds(.)) ### part 2: ggraph tiff("figures/AES_network_bymembership.tiff", width=1000, height=700, res=120) network %>% ggraph(., layout = "auto")+ geom_edge_arc(curvature=0.3, aes(width=(E(network)$weight/10), color=c("darkblue", "red")[as.factor(edge_list$relationship)], alpha=0.5)) + geom_node_point(aes(size = V(network)$hub_score*200, color= as.factor(V(network)$community))) + geom_node_text(aes(label = V(network)$name), size=5, color="white", repel=T)+ scale_color_scico_d(palette = "batlow")+ scale_edge_width(range = c(0.2,4))+ scale_size(range = c(0.5,20)) + #scale_edge_color_manual(values = c(scico(21, palette="batlow")))+ theme(plot.background = element_rect(fill = "black"), legend.position = "right", panel.background = element_rect(fill = "black")) dev.off() ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.