如何在轴标签或图例中使用geom_point形状?

时间:2016-03-31 13:00:36

标签: r ggplot2

我在三个实验条件(C1,C2,C3)中比较两个变量(V1,V2)。为此,我绘制了与每个变量和条件的估计平均值±可信区间重叠的不同变量分数。

Example: Mean Comparison between Groups with Credible Intervals

我正在寻找一种方法,在轴标签或图例中包含钻石符号,以将其标识为估计平均值。我是否必须依赖后处理(例如在 Inkscape 中)或者有没有办法在 ggplot2 中对此进行编码?

下面,我为图的估计部分复制了(简化的) R 代码。我会非常感谢任何建议!

  Condition <- c("C1", "C2", "C3", "C1", "C2", "C3")
  Variable  <- c("V1", "V1", "V1", "V2", "V2", "V2") 
  Estimate  <- c(3.05, 3.06, 3.21, 3.15, 3.14, 3.29)
  l95CI     <- c(2.81, 2.80, 2.97, 2.90, 2.88, 3.05)
  u95CI     <- c(3.30, 3.30, 3.46, 3.40, 3.39, 3.54)

  D <- data.frame(Condition, Variable, Estimate, l95CI, u95CI)

  F <- ggplot(D, aes(Condition, Estimate)) +
       geom_errorbar(aes(ymin = l95CI, ymax = u95CI), width = .2) +
       geom_point(fill = "white", shape = 23, size = 4) +
       ylim(1, 5) +
       labs(x = "Condition", y = "Score") + 
       facet_grid(. ~ Variable) +
       theme_bw()
编辑:我已经对原始图形进行了后处理,以包含估计平均值和可信区间的附加图例,作为我希望最终图形看起来如何的示例。我仍在寻找一种在 ggplot2 中实现此方法(或对轴标签进行类似更改)的方法。

Modified example

2 个答案:

答案 0 :(得分:1)

非常感谢您的帮助 - 我根本不了解guides功能。我已经实施了fanli的建议并想出了这个情节:

Solution with new legend

首先,我将颜色图例添加到相关的geom元素中。

geom_errorbar(aes(ymin = l95CI, ymax = u95CI, colour = "95% CI"), width = .2) +
geom_point(aes(colour = "Estimated Mean"), fill = "white", shape = 23, size = 4)

其次,我将颜色指定为黑色并重新排序标签。

scale_colour_manual(values = c('Estimated Mean' = 'black', '95% CI' = 'black'), limits = c('Estimated Mean', '95% CI'))

第三,我调整了图例中显示的形状,以反映它们要反映的元素。

guides(colour = guide_legend(override.aes = list(shape = c(23, 124), linetype = c(0, 0), size = c(4, 5))))

最后,我将图例移到了情节的底部。

theme(legend.title = element_blank(),
      legend.position = "bottom",
      legend.box = "horizontal"),
      legend.key = element_rect(colour = NA, fill = "white"))

错误栏在图例中仍未完全复制,但我不认为它会影响图表的清晰度。

答案 1 :(得分:0)

这并不能完全解决您的问题,因为我不认为错误栏是您可以指定的形状。但一般来说,您可以使用guides函数设置自定义图例。

D <- data.frame(Condition, Variable, Estimate, l95CI, u95CI, type=factor(c("Estimated Mean  ", "95% CI  "), levels=c("Estimated Mean  ", "95% CI  ")))


ggplot(D, aes(x=Condition, y=Estimate, group=type, color=type)) +
       geom_errorbar(aes(ymin = l95CI, ymax = u95CI), width = .2) +
       geom_point(fill = "white", shape = 23, size = 4) +
       ylim(1, 5) +
       labs(x = "Condition", y = "Score") + 
       facet_grid(. ~ Variable) + 
       guides(col=guide_legend(title=NULL, override.aes=list(shape=c(23,124)), 
         keywidth=1.2)) + theme_bw() + theme(legend.position="bottom", legend.key=
         element_rect(size=5,color="white")) + 
         scale_color_manual(values=c("black", "black"))