【问题标题】:Legend for additional points in a ggplotggplot 中附加点的图例
【发布时间】:2018-05-29 13:59:15
【问题描述】:

钢化这道题的例子(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)

【问题讨论】:

    标签: r ggplot2 legend


    【解决方案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) ) ) )
    

    【讨论】:

      【解决方案2】:

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

      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)
      

      【讨论】:

      • 感谢您的帮助,本杰明 :) 它工作正常!您只需将拼写错误“manuel”更正为“manual”并将 cond 列定义为字符
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多