按嵌套在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)