【问题标题】:Combining scale_shape(solid = TRUE) and scale_shape(solid = FALSE) in ggplot2在 ggplot2 中结合 scale_shape(solid = TRUE) 和 scale_shape(solid = FALSE)
【发布时间】:2019-03-07 18:17:21
【问题描述】:

我在 ggplot2 中绘制了一个图形,显示了个人参与者的价值和群体的手段。我想使用非填充点显示单个值,并且意味着使用填充点,按颜色分组。

以样本数据为例:

 group <- c("high", "high", "high", "low", "low", "low", "high", "high", "high", "low", "low", "low")
 condition <- c("c1", "c1", "c1", "c1", "c1", "c1", "c2", "c2", "c2", "c2", "c2", "c2")
 value <- c(.91, .63, .5, NA, NA, NA, .93, .76, .43, .5, .6, .8)
 subj <- c("s1", "s2", "s3", "s4", "s5", "s6")

 sample.data <- data.frame(group, condition, value, subj)


 ggplot(sample.data, aes(x=condition, y=value)) +
    geom_point(aes(colour=group, shape = group), size = 2, position = position_dodge(.1)) +
    scale_shape_manual(values=c(2,1)) + 
    geom_line(aes(group=subj), colour='lightgrey') +
    stat_summary(fun.y=mean, geom = "point", aes(shape=group, fill = group),
       size=5, position = position_dodge(.1)) +
    stat_summary(fun.y = mean, aes(group=group, colour=group), geom='line', 
       size=.8, position = position_dodge(.1))

在代码中我指定我希望填充由组确定,但这不起作用,如图所示。我还尝试添加scale_shape(solid=FALSE),如下所示:

 ggplot(sample.data, aes(x=condition, y=value)) +
    geom_point(aes(colour=group, shape = group), size = 2, position = position_dodge(.1)) +
    scale_shape(solid = FALSE) +
    geom_line(aes(group=subj), colour='lightgrey') +
    stat_summary(fun.y=mean, geom = "point", aes(shape=group, fill = group),
       size=5, position = position_dodge(.1)) +
    stat_summary(fun.y = mean, aes(group=group, colour=group), geom='line', 
       size=.8, position = position_dodge(.1))

但这会产生完全相同的数字。

【问题讨论】:

  • 哦,等等,对不起,你这样做了。你想要你的stat_summary 行和你的geom_points 不同的scale_shape 值吗?你能指定哪些点应该填充,哪些应该是空心的?
  • 您给出的形状,形状 1 和 2,只是轮廓。 sthda.com/english/wiki/… 等效的轮廓和填充形状将是 21 和 24

标签: r ggplot2


【解决方案1】:

听起来您可能只想引用填充的形状,它们有自己的值,所以对您的代码进行简单的更改:

library(ggplot2)
ggplot(sample.data, aes(x=condition, y=value)) +
  geom_point(aes(colour=group, shape=group), size = 2, position = position_dodge(.1)) +
  geom_line(aes(group=subj), colour='lightgrey') +
  stat_summary(fun.y=mean, geom = "point", aes(shape=group, fill = group),
               size=5, position = position_dodge(.1)) +
  stat_summary(fun.y = mean, aes(group=group, colour=group), geom='line', 
               size=.8, position = position_dodge(.1)) + 
  scale_shape_manual(values=c(24,21))

【讨论】:

  • 完美!谢谢!
猜你喜欢
  • 1970-01-01
  • 2010-12-01
  • 2012-12-12
  • 1970-01-01
  • 1970-01-01
  • 2019-03-09
  • 1970-01-01
  • 1970-01-01
  • 2013-01-01
相关资源
最近更新 更多