按嵌套在R中的类别中的y值对x轴进行排序的打印方框图
假设我有一个数据帧,按嵌套在R中的类别中的y值对x轴进行排序的打印方框图,r,plot,ggplot2,R,Plot,Ggplot2,假设我有一个数据帧,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) 然而,我想改变关于
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)
然而,我想改变关于这个情节的两件事:
(1) 我想让它用0
的值在d3
中绘制两个观察值,然后用1
的值绘制第二个观察值
(2) 我想让它按照y值的大小对每个组的观测值进行排序
正确的最终顺序是a、c、b、d
如果您可以根据
d3
变量添加颜色,则将获得额外奖励。如果我正确理解您的意思,您可以使用ggplot2
执行此操作:
library(ggplot2)
ggplot(test, aes(x=reorder(d2,d3), y=d1, fill=factor(d3))) +
geom_boxplot()
这使得:
您可以在base R中执行相同的操作:
plot(d1~reorder(d2,d3),data=test)
我希望这一切都在一个情节上,而不是像你们在这里所做的两个情节。x轴的顺序是a,c,b,d。我也不想手动指定,因为代码是一个简单的例子,我需要扩展到更多的观察值。这对这个特定的例子有效,但不能扩展。它确实根据d3参数将观察结果分开,并适当地对其进行着色,但在d3参数指定的每个组中,它们不会按照组的平均d1值进行排序。如果您只添加此
test$y会怎么样
plot(d1~reorder(d2,d3),data=test)