如何通过2个变量对ggplot boxplot点进行颜色编码?

时间:2019-06-18 18:25:23

标签: r ggplot2 boxplot

我有一个箱形图,显示了干预前后的得分。我想根据另一个分数,将一些点用不同的颜色显示。

换句话说,假设十名受试者在干预之前的得分分别为(8,9,10,8,9,10,8,9,10,8)和(12,9,12,8,9, 10,10,9,10,10)。现在,使用标准ggplot箱线图,我将第1组和第2组显示为具有不同颜色的箱线图。我想用第三种颜色为一些子喷射器上色(在绘图的前后),这表明存在另一个二进制变量(例如年龄> 50)。

PreopRespondersBoxPlotLDS <- ggboxplot(data=PreopResponders, 
x="Response",y="RespondersVsNonPreopLDS.preop", color = "Response", palette = 
"jco", add = "jitter") + labs(title = "Left Dorsal Striatum Connectivity to the Right Occipital Cortex", y = "Connectivity")
 + theme(axis.title.x = element_blank(), legend.position="none", legend.title = element_blank(), plot.title = element_text(hjust = 0.5))

我没有收到错误消息,我只是想能够使用一种额外的颜色来为二进制变量编码。

1 个答案:

答案 0 :(得分:0)

以下内容是问题的要求。它使用geom_boxplot,而不是ggboxplot。并在对geom_jitter的调用中通过二进制条件对数据进行子集化。这种情况很容易成为二进制数据帧变量。

还要注意,我在图形标题中包含了换行符"\n"

library(ggplot2)

g <- ggplot(PreopResponders, aes(x = Response, y = RespondersVsNonPreopLDS.preop,
                                 color = Response)) + 
              geom_boxplot() +
              geom_jitter(data = subset(PreopResponders, Age > 50), 
                          color = "black",
                          width = 0.25, height = 0.25) +
              labs(title = "Left Dorsal Striatum Connectivity \nto the Right Occipital Cortex", y = "Connectivity") +
              theme(axis.title.x = element_blank(), 
                    legend.position = "none", 
                    legend.title = element_blank(), 
                    plot.title = element_text(hjust = 0.5))

g

enter image description here

数据创建代码。

PreopResponders <- data.frame(Response = factor(rep(c("Before", "After"), each = 10), labels = c("Before", "After")),
                              RespondersVsNonPreopLDS.preop = c(c(8,9,10,8,9,10,8,9,10,8),
                                                                c(12,9,12,8,9,10,10,9,10,10)))
set.seed(1234)
PreopResponders$Age <- sample(18:100, 20, TRUE)