如何使 geom_line 中的一种线条颜色掩盖其他线条颜色?

时间:2021-06-22 07:23:34

标签: r ggplot2

我正在尝试创建一个类似于下面的图,其中蓝色遮蔽了灰色。但是,在我创建的图中,蓝色并没有盖过其他颜色。有人可以指导我如何实现吗?

这是我想在颜色方面得到的图:

enter image description here

这是我的情节:

  ggplot(df, aes(year, unemp), color=cntry)+
  geom_line(aes(group=cntry, color=cntry), size=1.5)+
  scale_color_manual(values=c('dark blue','#999999','#999999','#999999','#999999','#999999'))

enter image description here

这是我的数据:

   df= structure(list(cntry = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L), .Label = c("France", 
"Germany", "Italy", "Poland", "Spain", "United Kingdom"), class = "factor"), 
    year = c(2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 
    2010, 2011, 2012, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 
    2009, 2010, 2011, 2012, 2002, 2003, 2004, 2005, 2006, 2007, 
    2008, 2009, 2010, 2011, 2012, 2002, 2003, 2004, 2005, 2006, 
    2007, 2008, 2009, 2010, 2011, 2012, 2002, 2003, 2004, 2005, 
    2006, 2007, 2008, 2009, 2010, 2011, 2012, 2002, 2003, 2004, 
    2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012), unemp = c(8, 
    9, 9, 9, 9, 8, 7, 9, 9, 9, 10, 9, 10, 10, 11, 10, 9, 7, 8, 
    7, 6, 5, 9, 8, 8, 8, 7, 6, 7, 8, 8, 8, 11, 20, 20, 19, 18, 
    14, 10, 7, 8, 10, 10, 10, 11, 11, 11, 9, 8, 8, 11, 18, 20, 
    21, 25, 5, 5, 5, 5, 5, 5, 6, 8, 8, 8, 8)), row.names = c(NA, 
-66L), class = c("tbl_df", "tbl", "data.frame"))

2 个答案:

答案 0 :(得分:2)

用户@stefan 已将这个问题作为 this one 的副本关闭,但我不相信该骗子会回答它。这个问题询问如何将一条线放在所有其他线之上,而不仅仅是突出显示它。

这是一种方法。反转因子水平并反转图例,以使 France 位于顶部。

library(dplyr)
library(ggplot2)

clrs <- c('dark blue','#999999','#999999','#999999','#999999','#999999')

df %>%
  mutate(cntry = factor(cntry, levels = rev(levels(cntry)))) %>%
  ggplot(aes(year, unemp), color=cntry)+
  geom_line(aes(group=cntry, color=cntry), size=1.5)+
  scale_color_manual(values = rev(clrs),
                     guide = guide_legend(reverse = TRUE))  

enter image description here

答案 1 :(得分:1)

您可以在其他之后单独绘制它。像这样:

ggplot(df, aes(year, unemp), color=cntry)+
  geom_line(aes(group=cntry, color=cntry), size=1.5)+
  geom_line(data = df[df$cntry == 'France',], aes(group=cntry, color=cntry), size=1.5)+
  scale_color_manual(values=c('dark blue','#999999','#999999','#999999','#999999','#999999'))