首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带盒图组摘要的Dotplot

带盒图组摘要的Dotplot
EN

Stack Overflow用户
提问于 2013-11-11 07:28:12
回答 1查看 718关注 0票数 1

我正在按两类绘制数据,首先是底层数据:

代码语言:javascript
复制
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)))

然后我订购了因子

代码语言:javascript
复制
of <- ddply(d1, .(x), function(i) mean(i$v1))
of <- of[order(-of$V1),]
d1$x <- factor(d1$x, levels = of$x)

这提供了以下的情节

代码语言:javascript
复制
ggplot(d1) + geom_point(aes( x = v1, y = x)) + 
             facet_grid(group ~ .,
                        scales = "free_y",
                        space = "free_y")

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

代码语言:javascript
复制
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")

它提供了以下内容,现在我被困住了

我只想要一个横向方格旁边的“总”轴断裂,总结每一组的数据。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-11 07:49:36

起点是创建两个数据框架-- Total作为原始数据框架,Total (x值都是Total )。

代码语言:javascript
复制
d2 <- d1
d2$x <- "Total"

然后使用d1来生成点,使用d2来生成方格图。下面是框图垂直对齐的例子,其中x值被用作x。问题是要有水平的盒形图,就必须使用coord_flip()。翻转轴和自由鳞片不能一起使用。

代码语言:javascript
复制
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()放在一起,用于库gridExtra。在第一和第二幅图中,我删除了x轴的所有标记、文本和标题。

代码语言:javascript
复制
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)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19900975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档