2017-05-30 161 views
2

注意:这是this question的后续操作。从图例中删除ggplot2的geom_point图标

首先代码重现数据:

mydf <- data.frame(year = c(rep(2000, 3), rep(2002, 3), rep(2004, 3), rep(2006, 3), rep(2008, 3), rep(2010, 3), rep(2012, 3), rep(2014, 3), rep(2016, 3)), 
       answer = rep(c("A great deal", "Hardly any", "Only some"), 9), 
       result = c(0.3015940, 0.1399303, 0.5584757, 0.2269548, 0.1792754, 0.5937698, 0.2955301, 0.1309859, 0.5734840, 0.3008197, 0.1344499, 
                0.5647303, 0.1919454, 0.2026290, 0.6054256, 0.1059793, 0.4190533, 0.4749674, 0.1190636, 0.3631279, 0.5178085, 0.1518314, 
                0.3181203, 0.5300483, 0.1424715, 0.3094615, 0.5480669)) 
mydf$year <- factor(mydf$year) 
mydf$answer <- factor(mydf$answer) 

triangles <- data.frame(year = c(2002, 2004, rep(2008, 2), rep(2010, 3), 2012), 
         answer = c(rep("A great deal", 3), "Hardly any", "A great deal", "Only some", rep("Hardly any", 2)), 
         direction = c("Decrease", "Increase", "Decrease", "Increase", rep("Decrease", 2), "Increase", "Decrease"), 
         result = c(0.2269548, 0.2955301, 0.1919454, 0.2026290, 0.1059793, 0.4749674, 0.4190533, 0.3631279)) 
triangles$year <- factor(triangles$year) 
triangles$answer <- factor(triangles$answer) 
triangles$direction <- factor(triangles$direction) 

当我运行下面的代码ggplot2,我结束了这一点:

ggplot() + 
geom_line(data = mydf, aes(x = year, y = result, colour = answer, group = answer)) + 
geom_point(data = triangles, aes(x = year, y = result, fill = answer, shape = direction), size = 3) + 
scale_shape_manual(values = c(25, 24)) 

enter image description here

这里的问题是那个占据了answer传说关键点的黑点。我尝试使用以下层将其删除:

guides(fill = guide_legend(override.aes = list(size = 0))) 

而且我得到这个:

enter image description here

我仍然得到传说中的一个很小的黑点。我还能做些什么来完全删除它?

+2

由于'colour'传说只影响行,你可以这样做:'指南(颜色= guide_legend(override.aes =名单(形状= NA) ))'。 – eipi10

回答

2

你可以做

ggplot() + 
    geom_line(data = mydf, aes(x = year, y = result, colour = answer, group = answer)) + 
    geom_point(data = triangles, aes(x = year, y = result, fill = answer, shape = direction), size = 3) + 
    scale_shape_manual(values = c(25, 24), name = "direction") + 
    scale_color_discrete(name = "answer") + 
    scale_fill_discrete(name = "c", guide = "none") 

enter image description here

+0

谢谢,这将符合法案。你能解释一下这里的逻辑吗?我不理解'scale_fill_discrete'函数如何解决这个问题。 – Phil

+1

Afaik,ggplot2试图将具有相同名称的比例(通常是映射的变量名称)组合起来。在这里,我明确地将比例尺重新命名为三个而不是两个;然后我指定不显示第三个。 – lukeA