如何将每个数据点颜色填充到 R 中的相应主题?

How can I color fill each data point to the corresponding subject in R?

我有一组数据,其中受试者在 2 个治疗条件 (REST/SMR) 下的 2 个时间点 (PRE/POST) 进行了测量。

我有 time/condition 绘制的数据,还显示了每个单独的数据点。

SUBJ<-as.factor(c(rep('S01', 5), rep('S02', 5)))
COND<-rep(c('BASELINE','REST_PRE', 'REST_POST', 'SMR_PRE', 'SMR_POST'), 2)
VAR<-c(5.240, 5.774, 5.241, 5.260, 5.168, 5.110, 4.996, 5.006, 5.176, 5.038)

example<-data.frame(SUBJ, COND, VAR)

ggplot(subset(example, COND !='BASELINE')) + geom_boxplot(aes(x= COND, y=VAR, 
group = COND, color = COND), linetype = c(1, 2, 1, 2)) + 
scale_color_manual(values = c('black','black', 'gray40', 'gray40')) + 
geom_dotplot(aes(x= COND, y=VAR, group = COND, color = COND), binaxis = 'y', 
stackdir = 'center', binwidth = 0.08, dotsize = 0.5) + labs(x = NULL, y = 'm', 
size = 10) + theme(plot.title=element_text(hjust = 0.5,size = 12)) + theme_bw() 
+ theme(legend.position = 'none')

我希望每个数据点都针对每个主题进行颜色编码。我已经尝试添加 color = subject 或 fill = subject 作为美学是几个地方,以及 scale_fill_manual 和 scale_color_manual 似乎没有任何效果。任何帮助将不胜感激。

正如我在评论中提到的 - 我认为更好的选择是 geom_point 在你的情况下!

它认为你做的一切都是对的。但忽略了为 geom_dotplot 设置颜色美感只会改变由于填充而看不见的微小笔划。您必须同时设置填充和颜色:

编辑 为两个不同的变量设置相同的美学(颜色)是非常非常棘手的,而且很少有必要。使用 fill 代替 geom_dotplot。 (或 geom_point 更好)

library(ggplot2)

SUBJ<-as.factor(c(rep('S01', 5), rep('S02', 5)))
COND<-rep(c('BASELINE','REST_PRE', 'REST_POST', 'SMR_PRE', 'SMR_POST'), 2)
VAR<-c(5.240, 5.774, 5.241, 5.260, 5.168, 5.110, 4.996, 5.006, 5.176, 5.038)

example<-data.frame(SUBJ, COND, VAR)

ggplot(subset(example, COND !='BASELINE')) + 
  geom_boxplot(aes(x= COND, y=VAR, color = COND), linetype = c(1, 2, 1, 2)) + 
  geom_dotplot(aes(x= COND, y=VAR, color = COND, fill = SUBJ), binaxis = 'y', 
               stackdir = 'center', binwidth = 0.08, dotsize = 0.5) +

  scale_color_manual(values = c('black','black', 'gray40', 'gray40')) 

reprex package (v0.2.1)

于 2019-08-07 创建