ggplot中附加点的图例

时间:2018-05-29 13:59:16

标签: r ggplot2 legend

请问这个问题的例子(Link),我想询问是否可以在图例中添加额外的蓝点?

dat <- data.frame(cond = rep(c("A", "B"), each=10),
              xvar = 1:20 + rnorm(20,sd=3),
              yvar = 1:20 + rnorm(20,sd=3))
g1 <- dat[15,]

ggplot(dat, aes(x = xvar, y = yvar, shape = cond, 
                     colour = cond), size = 2.5) + 
geom_point(alpha = 1) +
geom_point(data = g1, colour = "blue", size = 4, show_guide = FALSE)

enter image description here

2 个答案:

答案 0 :(得分:1)

您可以将附加点图层的美感放在aes内,而不是外部,以将其添加到图例中。您可以使用任何字符串值;该字符串将是图例中的名称。

然后,您可以通过scale_*_manual图层控制该点的颜色和形状。

我还使用override.aes更改了图例中该点的大小,这是可选的。

ggplot(dat, aes(x = xvar, y = yvar, shape = cond, 
                colour = cond), size = 2.5) + 
     geom_point(alpha = 1) +
     geom_point(data = g1, aes(colour = "Point 15", shape = "Point 15"), size = 4) +
     scale_shape_manual(values = c(16, 17, 17) ) +
     scale_color_manual(values = c("pink", "turquoise", "blue") ) +
     guides(color = guide_legend( override.aes = list(size = c(1.5, 1.5, 4) ) ) )

enter image description here

答案 1 :(得分:0)

您可能必须像在示例中那样更改数据中该点的条件,或者将其添加到日期(如果它还不是它的一部分)。

dat <- data.frame(cond = rep(c("A", "B"), each=10),
          xvar = 1:20 + rnorm(20,sd=3),
          yvar = 1:20 + rnorm(20,sd=3))
dat$size = 2.5
dat[15,]$cond = "C"
dat$cond = as.character(dat$cond)
dat[15,]$size = 4

ggplot(dat, aes(x = xvar, y = yvar, shape = cond, 
                 colour = cond, size=size)) + 
geom_point(alpha = 1) +
scale_colour_manual(values=c("red", "turquoise", "blue")) +
scale_size_continuous(guide = FALSE)