【问题标题】:Specifying shapes in a legend in ggplot2在ggplot2的图例中指定形状
【发布时间】:2019-04-05 10:17:23
【问题描述】:

我想更改我的图例,使其显示颜色但不区分形状。

这是一些数据:

 exampledata <- tribble(~subject, ~group, ~PC, ~condition,
    "1", "A", .8, "cond1",
    "1", "A", .4, "cond2",
    "2", "B", .45, "cond1",
    "2", "B", .4, "cond2",
    "3", "A", .6, "cond1",
    "3", "A", .3, "cond2",
    "4", "B", .5, "cond1",
    "4", "B", .34, "cond2",
    "5", "A", .86, "cond1",
    "5", "A", .34, "cond2",
    "6", "B", .45, "cond1",
    "6", "B", .64, "cond2",
    "7", "A", .36, "cond1",
    "7", "A", .23, "cond2",
    "8", "B", .59, "cond1",
    "8", "B", .24, "cond2",
    "9", "A", .8, "cond1",
    "9", "A", .14, "cond2",
    "10", "B", .42, "cond1",
    "10", "B", .74, "cond2",
    "11", "A", .56, "cond1",
    "11", "A", .32, "cond2",
    "12", "B", .65, "cond1",
    "12", "B", .14, "cond2",
    "13", "A", .76, "cond1",
    "13", "A", .63, "cond2",
    "14", "B", .56, "cond1",
    "14", "B", .14, "cond2",
    "15", "A", .66, "cond1",
    "15", "A", .33, "cond2",
    "16", "B", .65, "cond1",
    "16", "B", .24, "cond2",
    "17", "A", .16, "cond1",
    "17", "A", .73, "cond2",
    "18", "B", .29, "cond1",
    "18", "B", .22, "cond2"
    )

到目前为止我一直在使用的代码:

 ggplot(exampledata, aes(x=condition, y=PC, shape = condition, color = group))+
   geom_point(aes(group=group), size = 5, position=position_dodge(-.2)) +
   stat_summary(fun.data=mean_cl_boot, geom = "pointrange", aes(shape=condition, fill = group), 
           size=1.5, position = position_dodge(-.2), colour = "grey32") +
   stat_summary(fun.y = mean, aes(group=group, colour=group), geom='line', size=.8, position = position_dodge(-.2)) +
   scale_shape_manual(name = "group",
                 labels = c("A", "B"),
                 values=c(21,24)) +
   scale_colour_manual(name = "group",
                  labels = c("A", "B"),
                  values = c("#F8766D","#00BFC4")) +
   xlab("condition") +
   ylab('%') +
   theme_bw(base_size=15) +
   theme(axis.text = element_text(size = 20),
    axis.title = element_text(size=20),
    legend.title = element_blank(),
    legend.justification=c(1,1), legend.position=c(1,.99))

这会生成附加图,这几乎是我想要的。但是,如您所见,传说中的形状也有所不同。我希望形状是相同的,理想的填充正方形。我尝试了this post 的建议,并在我的代码中添加了guides(colour = guide_legend(override.aes = list(shape = 15))),但这给了我灰色的方块,上面有彩色线条——我想要指定颜色的填充方块。我想我快到了,但我不能完全正确]2

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    以下代码将图例绘制为简单的彩色圆圈:

    ggplot(exampledata, aes(x=condition, y=PC, shape = condition, color = group)) +
      geom_point(aes(group=group), size = 5, position=position_dodge(-.2)) +
      stat_summary(fun.data=mean_cl_boot, geom = "pointrange", aes(shape=condition, fill = group), 
                   size = 1.5, position = position_dodge(-.2), colour = "grey32", show.legend = FALSE) +
      stat_summary(fun.y = mean, geom='line', aes(group=group, colour=group),
                   size=.8, position = position_dodge(-.2), show.legend = FALSE) +
      scale_shape_manual(name = "group",
                         labels = c("A", "B"),
                         values=c(21,24)) +
      scale_colour_manual(name = "group",
                          labels = c("A", "B"),
                          values = c("#F8766D","#00BFC4")) +
      xlab("condition") +
      ylab('%') +
      theme_bw(base_size=15) +
      theme(axis.text = element_text(size = 20),
            axis.title = element_text(size=20),
            legend.title = element_blank(),
            legend.justification=c(1,1), legend.position=c(1,.99)) +
      guides(shape = FALSE)
    

    这里有两个变化:首先,我在stat_summary 函数中添加了show.legend = FALSE,因此它们不再包含在图例中(否则它们会添加小线条几何图形)。其次,我添加了guides(shape = FALSE),这样形状美学就不会映射到图例。

    【讨论】:

    • 这行得通,谢谢!传说中的形状是一个圆形 - 有没有办法把它变成一个正方形?
    • 不错!实际上,灰色方块的主要问题是stat_summary 中的colour="grey32",一旦您在此处添加show.legend=FALSE,其他一切都应该按预期工作,我们甚至可以得到参考帖子@ 中提到的图例中的方块987654328@
    【解决方案2】:

    认为两个小的修改就可以解决问题:

    show.legend=FALSE 在 geom_point 规范中, 最后是guides(shape="none", fill="none")

    ggplot(exampledata, aes(x=condition, y=PC, shape = condition, color = group))+
      geom_point(aes(group=group), size = 5, position=position_dodge(-.2),
                 show.legend = FALSE) +
      stat_summary(fun.data=mean_cl_boot, geom = "pointrange", aes(shape=condition, fill = group), 
                   size=1.5, position = position_dodge(-.2), colour = "grey32") +
      stat_summary(fun.y = mean, aes(group=group, colour=group), geom='line', size=.8, position = position_dodge(-.2)) +
      scale_shape_manual(name = "group",
                         labels = c("A", "B"),
                         values=c(21,24)) +
      scale_colour_manual(name = "group",
                          labels = c("A", "B"),
                          values = c("#F8766D","#00BFC4")) +
      xlab("condition") +
      ylab('%') +
      theme_bw(base_size=15) +
      theme(axis.text = element_text(size = 20),
            axis.title = element_text(size=20),
            legend.title = element_blank(),
            legend.justification=c(1,1), legend.position=c(1,.99))+
      guides(shape="none", fill="none")
    

    【讨论】:

      猜你喜欢
      • 2012-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-27
      • 1970-01-01
      • 2022-09-27
      • 2017-10-22
      相关资源
      最近更新 更多