如果这不是简历,而是更多的原因,我很抱歉。
我试图将第二个框图包含到现有的盒图中,该框图是按所绘制的值的平均值排序的。当我包含来自第二个data.frame的框图(将一个控制示例表示到其他绘图)时,原始图就会放松它的顺序。
以下是一个例子:
x1 <- data.frame("V1" = runif(100, 0, 100), "siteno" = "X1") #mean = 50.3
x2 <- data.frame("V1" = runif(100, 200, 450), "siteno" = "X2") #mean = 322.4
x3 <- data.frame("V1" = runif(100, 50, 150), "siteno" = "X3") #mean = 97.8
xData <- rbind(x1,x2,x3)
xData$siteno <- with(xData, reorder(siteno, V1, mean))
zData <- data.frame("V1" = runif(300, 0, 450), "siteno" = "Z1") #mean = 224.2
#orders xData correctly
ggplot(xData, aes(x = siteno , y = V1)) +
stat_summary(fun.y=mean, colour="red", geom="point") +
geom_boxplot (aes(fill=siteno), alpha=.5, width=1, position = position_dodge(width = 1), outlier.colour = "dark gray", outlier.size = 1)这就产生了下面的图,其中的x变量按平均值正确排序:

如果我尝试下面的代码来添加控制数据,那么x变量的顺序就会丢失:
x1 <- data.frame("V1" = runif(100, 0, 100), "siteno" = "X1") #mean = 50.3
x2 <- data.frame("V1" = runif(100, 200, 450), "siteno" = "X2") #mean = 322.4
x3 <- data.frame("V1" = runif(100, 50, 150), "siteno" = "X3") #mean = 97.8
xData <- rbind(x1,x2,x3)
xData$siteno <- with(xData, reorder(siteno, V1, mean))
zData <- data.frame("V1" = runif(300, 0, 450), "siteno" = "Z1") #mean = 224.2
#orders xData correctly
ggplot(xData, aes(x = siteno , y = V1)) +
stat_summary(fun.y=mean, colour="red", geom="point") +
geom_boxplot (aes(fill=siteno), alpha=.5, width=1, position = position_dodge(width = 1), outlier.colour = "dark gray", outlier.size = 1) +
geom_boxplot(data=zData, aes(x = siteno , y = V1))这将生成以下图,不需要对x变量排序:

我的图表的要点是显示按平均值排序的测试值,然后将控制值框图移到右边以供视觉参考。我想可能有一个将xData和zData数据文件结合在一起的解决方案;如果有一些建议,我愿意尝试。谢谢您抽时间见我。
发布于 2013-12-16 17:17:10
当您使用两个数据帧在一个图中组合数据时,原始级别(和顺序)将丢失,并且将使用新的级别,而不是从两个数据帧中组合的数据。由于没有为第二个数据框架提供填充参数,所以无法获得填充值的这种行为。但对于离散x尺度,这两种数据帧都是组合的,新的层次是X1、X2、X3和Z1。
无需从所有值创建一个数据框架,您就可以使用scale_x_discrete(),然后在参数中使用limits=函数levels()获取siteno级别的原始顺序,并将其与Z1结合起来作为参考级别。
ggplot(xData, aes(x = siteno , y = V1)) +
stat_summary(fun.y=mean, colour="red", geom="point") +
geom_boxplot (aes(fill=siteno), alpha=.5, outlier.colour = "dark gray",
outlier.size = 1) +
geom_boxplot(data=zData, aes(x = siteno , y = V1))+
scale_x_discrete(limits=c(levels(xData$siteno),"Z1"))

发布于 2013-12-16 17:17:19
为什么不将它们全部添加到一个data.frame中,并在其中对所有4个级别进行排序?
data2 <- rbind(xData, zData)
ggplot(data2, aes(x = siteno , y = V1)) +
stat_summary(fun.y=mean, colour="red", geom="point") +
geom_boxplot (aes(fill=siteno), alpha=.5, width=1,
position = position_dodge(width = 1),
outlier.colour = "dark gray", outlier.size = 1)

发布于 2013-12-16 17:17:23
获取所需的订单(如:
ord <- xvars[order(mean(xvars))]然后使用scale_x_discrete()
https://stackoverflow.com/questions/20616531
复制相似问题