1

我按两类绘制数据,首先是基础数据:

library(plyr)
library(ggplot2)

d1 <- data.frame(v1 = rnorm(30),
                  x = rep(letters[1:6],  
                          c(6, 3, 8, 3, 4, 6)),
              group = rep(paste("g", 1:3, sep = ""),
                          c(9, 11, 10)))

然后我订购因素

of <- ddply(d1, .(x), function(i) mean(i$v1))
of <- of[order(-of$V1),]
d1$x <- factor(d1$x, levels = of$x)

这提供了以下情节

ggplot(d1) + geom_point(aes( x = v1, y = x)) + 
             facet_grid(group ~ .,
                        scales = "free_y",
                        space = "free_y")

第一个没有总摘要的图

但是我还想为每个组添加一个单独的水平箱线图,描绘相关分布。我知道第一步是在 y 轴上提供一个“总”空间:

d2 <- rbind(d1, 
        data.frame(v1 = NA,
                    x = "Total",
                group = unique(d1$group)))

 ggplot(d2) + geom_point(aes( x = v1, y = x)) + 
              facet_grid(group ~ .,
                         scales = "free_y",
                         space = "free_y")

它提供了以下内容,在这里我被卡住了

在 y 轴上绘制总点。

我只想要一个水平箱线图旁边的“总计”轴中断,总结每个组的数据。

提前致谢。

4

1 回答 1

2

起点是制作两个数据框 -d1作为您的原始数据框和d2x 值都在哪里Total

d2 <- d1
d2$x <- "Total"

然后用于d1制作点和d2制作箱线图。这是箱线图垂直对齐的示例,其中x值用作 x。问题是你必须使用水平箱线图coord_flip()。翻转轴和自由秤不能一起使用。

ggplot()+geom_point(data=d1,aes(x=x,y=v1))+
  geom_boxplot(data=d2,aes(x=x,y=v1))+
  facet_wrap(~group ,
             scales = "free_x")

在此处输入图像描述

获得所需方向的解决方法是制作三个单独的图(每组一个),然后将它们与grid.arrange()for library放在一起gridExtra。对于第一个和第二个图,我删除了 x 轴的所有刻度、文本和标题。

library(gridExtra)

p1<-ggplot()+geom_point(data=subset(d1,group=="g1"),aes(x=x,y=v1))+
  geom_boxplot(data=subset(d2,group=="g1"),aes(x=x,y=v1))+
  coord_flip()+
  facet_grid(group~.)+
  scale_y_continuous(limits=c(-2,2.5))+
  theme(axis.title.x=element_blank(),
        axis.text.x=element_blank(),
        axis.ticks.x=element_blank())

p2<-ggplot()+geom_point(data=subset(d1,group=="g2"),aes(x=x,y=v1))+
  geom_boxplot(data=subset(d2,group=="g2"),aes(x=x,y=v1))+
  coord_flip()+
  facet_grid(group~.)+
  scale_y_continuous(limits=c(-2,2.5))+
  theme(axis.title.x=element_blank(),
        axis.text.x=element_blank(),
        axis.ticks.x=element_blank())

p3<-ggplot()+geom_point(data=subset(d1,group=="g3"),aes(x=x,y=v1))+
  geom_boxplot(data=subset(d2,group=="g3"),aes(x=x,y=v1))+
  coord_flip()+
  facet_grid(group~.)+
  scale_y_continuous(limits=c(-2,2.5))

grid.arrange(p1,p2,p3)

在此处输入图像描述

于 2013-11-11T07:49:36.367 回答