Объединение scale_shape (solid = TRUE) и scale_shape (solid = FALSE) в ggplot2

#r #ggplot2

#r #ggplot2

Вопрос:

Я рисую фигуру в 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))
  

Но это генерирует точно такую же фигуру.

Комментарии:

1. О, подождите, извините, вы это сделали. Вам нужны разные scale_shape значения для ваших stat_summary строк по сравнению с вашими geom_point строками? Можете ли вы указать, какие точки должны быть заполнены, а какие должны быть пустыми?

2. Приведенные вами фигуры, фигуры 1 и 2, являются просто контурами. sthda.com/english/wiki/… Эквивалентными очерченными и заполненными фигурами были бы 21 и 24

Ответ №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))
  

заполненные фигуры

Комментарии:

1. Идеально! Спасибо!