假设我有一个数据框test
:
d1<-c(4.1,4.9,4.5,4.4,1.9,2.1,2.3,1.7,10.1,9.5,10.9,10.3,3.1,3.0,3.2,2.9)
d2<-c('a','a','a','a','b','b','b','b','c','c','c','c','d','d','d','d')
d3<-c(0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1)
test<-data.frame(d1,d2,d3)
如果我将箱形图作为d2的函数,我得到下图:
plot(d1~d2,data=test)
但是,我想改变这个情节的两个方面:
(1)我希望它在0
中用d3
的值绘制两个观察值,然后绘制第一个,将值1
绘制成第二个。
(2)我希望它按照y值的大小对每组中的观察结果进行排序。
正确的最终订单是a,c,b,d。
如果您可以根据d3
变量添加颜色,则可获得奖励。
答案 0 :(得分:1)
如果我理解你,你可以用ggplot2
:
library(ggplot2)
ggplot(test, aes(x=reorder(d2,d3), y=d1, fill=factor(d3))) +
geom_boxplot()
这给出了:
您可以在基础R中执行相同的tric:
plot(d1~reorder(d2,d3),data=test)