首页 > 解决方案 > 如何更改ggnetwork中geom_node的颜色?

问题描述

我正在尝试进行疾病模拟,我希望受感染的节点(is_infected>0)为红色,未感染的(is_infected=0)节点颜色为青色。

                results <- results %>% mutate(
                        S = infected == 0,
                        E = 0 < infected & infected < 6,
                        I = infected >= 6 & infected <= 11,
                        R = infected > 11,
                        is_infected = infected > 0
                )
                
                net.layout.by.time <-
                        split(results, f = results$t%in% c(5, 7, 16, 40, 80)) %>%
                        lapply(FUN = right_join,
                               y = net.layout,
                               by = "id") %>%
                        bind_rows
                
                net.layout.by.time <- split(results, f = results$t) %>%
                        lapply(FUN = right_join, y = net.layout, by = "id") %>% 
                        bind_rows
                
                net.layout.by.time %>% 
                        filter(t %in% c(5, 6, 7, 20, 40)) %>%
                        ggplot(aes(xend = xend, yend = yend, x = x, y = y)) + 
                        geom_edges(color = "lightgray") +
                        geom_nodes(aes(color = is_infected)) + 
                        facet_wrap(~ t) + 
                        theme_blank()

我的代码产生了完全相反的结果。在此处输入图像描述 我该如何改变呢?

标签: rggplot2data-visualizationggprotoggnetwork

解决方案


这可能很有用,但在缺乏共享数据的情况下未经测试:

library(ggplot2)
#Code
net.layout.by.time %>% 
                        filter(t %in% c(5, 6, 7, 20, 40)) %>%
                        ggplot(aes(xend = xend, yend = yend, x = x, y = y)) + 
                        geom_edges(color = "lightgray") +
                        geom_nodes(aes(color = is_infected)) + 
                        facet_wrap(~ t) + 
                        theme_blank()+scale_color_manual(values=c("blue","red"))

推荐阅读