代码之家  ›  专栏  ›  技术社区  ›  Joachim Schork

ggplot2:用白色填充的线条+点在绘图和图例中?

  •  2
  • Joachim Schork  · 技术社区  · 6 年前

    我想用ggplot2包创建一个图,它结合了线和点。根据组指示符,这些点应该有颜色和形状。应创建一个图例,根据绘图显示颜色和形状。

    这部分工作得很好。然而, 所有点都应填充白色 我找不到合适的密码。

    谷歌搜索建议使用 fill = "white" 但这不起作用。

    考虑以下示例数据和绘图:

    library("ggplot2")
    
    # Example data
    df <- data.frame(y = 1:100,
                     x = 1:100,
                     group = as.factor(c(rep(1, 33), rep(2, 33), rep(3, 34))))
    
    # Create plot --> fill = "white" doesnt work
    ggplot(df, aes(x = x, y = y)) + 
      geom_line(aes(colour = factor(group, labels = c("a", "b", "c")))) +
      geom_point(aes(colour = factor(group, labels = c("a", "b", "c")),
                     shape = factor(group, labels = c("a", "b", "c"))),
                 fill = "white") +              ##### This line is not working #####
      theme(legend.title = element_blank())
    

    enter image description here

    问题:我怎样才能用白色(在情节和传说中)来填充情节的要点呢?

    2 回复  |  直到 6 年前
        1
  •  1
  •   LAP    6 年前

    你可以使用 scale_shape_discrete 设置 solid = FALSE :

    ggplot(df, aes(x = x, y = y)) + 
      geom_line(aes(colour = factor(group, labels = c("a", "b", "c")))) +
      scale_shape_discrete(solid = F) +
      geom_point(aes(colour = factor(group, labels = c("a", "b", "c")),
                     shape = factor(group, labels = c("a", "b", "c")))) +              
    theme(legend.title = element_blank())
    

    enter image description here

        2
  •  2
  •   Mikko Marttila    6 年前

    使用的默认形状 GGPROTT2 只有一种颜色:两种颜色 颜色和填充,你必须使用点形状从21到25。然后设置 fill = "white" 将工作:

    library(ggplot2)
    
    df <- data.frame(
      y = 1:10, x = 1:10,
      group = factor(rep(1:3, c(3, 3, 4)), labels = letters[1:3])
    )
    
    ggplot(df, aes(x = x, y = y, colour = group)) +
      geom_line() +
      geom_point(aes(shape = group), fill = "white", size = 3) +
      theme(legend.title = element_blank()) +
      scale_shape_manual(values = 20 + seq_along(unique(df$group)))