我正在尝试使用两个x变量在ggplot2中生成一个分组的boxplot。
是直截了当的ggplot(boxplot_classes, aes(x=Group, y=Value, fill=Mutation)) +
geom_boxplot(position=position_dodge(0.8))
但是,我不需要比较第二个x变量定义的两个子组,但对于第一个x变量定义的每个组,我需要将该组中的所有样本与来自第二个x的一个子组进行比较x变量。
这是一个例子。数据如下所示:
Value Mutation Group
32.00 Yes 1
5.00 no 1
18.00 no 1
3.00 no 1
16.00 no 1
14.00 Yes 1
28.00 Yes 1
28.00 Yes 1
49.00 Yes 1
15.00 Yes 1
43.00 no 2
49.00 Yes 2
40.00 Yes 2
17.00 Yes 2
9.00 no 2
31.00 Yes 2
8.00 Yes 2
43.00 no 2
50.00 Yes 2
48.00 Yes 2
11.00 Yes 3
42.00 no 3
0.00 Yes 3
15.00 Yes 3
8.00 no 3
1.00 Yes 3
41.00 no 3
15.00 no 3
4.00 no 3
31.00 Yes 3
我想生成一个数字,在每个“组”中(在上面的示例中:1,2,3)生成两个箱图:一个用于此“组”中的所有样本,一个仅用于那些样本中的这个群体也有突变==“是”。在真实数据中,还有更多“群体存在”。
我希望我能很好地解释我的问题。不幸的是,我在某种程度上错过了正确的语法或数据必须如何重新排列。
非常感谢您的帮助!
生成的数字示例答案 0 :(得分:2)
如果我们稍微使用您的数据,我们就可以做到。假设您的数据位于dat
:
dat_yes <- dat[dat$Mutation == 'Yes',] #subset only Yes
dat_yes$Mutation_2 <- 'Yes' #add column
dat$Mutation_2 <- 'All' #add column
dat_full <- rbind(dat, dat_yes) #put together
#plot
ggplot(dat_full, aes(x = factor(Group), y = Value))+
geom_boxplot(aes(fill = Mutation_2))+
xlab('Group') +
scale_fill_brewer(palette = 'Set1', name = 'Mutation')
首先,我们创建一个名为dat_yes
的数据子集,其中只包含Mutation == 'Yes'
行。然后,我们在名为dat_yes
的{{1}}中创建一个新列,仅取Mutation_2
的值。然后,我们在名为'Yes'
的原始数据中添加一列,其中只有Mutation_2
的值。然后,我们'All'
rbind
和dat
创建dat_yes
。最后,我们将dat_full
发送给dat_full
。
ggplot
答案 1 :(得分:0)
你有一个你想要的示例情节吗?
您可以尝试使用facet_grid()或facet_wrap()和子集化数据的组合来获取Mutation == Yes部分。
试试这个:
plot_base<- ggplot(boxplot_classes, aes(x=data, y=Value, fill=Mutation)) + geom_boxplot(position=position_dodge(0.8)) + facet_grid(Mutation~Group)
查看facet_grid和facet_wrap的其他选项以进一步修改。
获得变异==是部分:
plot_base %+% subset(boxplot_classes, Mutation %in% "Yes")