首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ggplot中将x轴拆分成多个图?

如何在ggplot中将x轴拆分成多个图?
EN

Stack Overflow用户
提问于 2014-07-24 20:46:30
回答 3查看 12.8K关注 0票数 7

我有以下数据集:

代码语言:javascript
复制
df <- as.data.frame(cbind(Position = c(1,2,3,4,5,6,7,8,9,10), 
    Value = c(11.31, 10.39, 9.50, 6.61, 5.41, 
    3.88, 3.81, 1.25, 0.70,10.41)))

我想将其绘制为条形图,位置值为1-3,4-6,7-9,10在单独的图中,即4个独立的图彼此下方。在ggplot中有没有简单的方法可以做到这一点?

编辑:我想在没有空职位的情况下实现这一点。

干杯,约瑟夫

EN

回答 3

Stack Overflow用户

发布于 2014-07-26 07:01:04

最简单的方法是使用facet_grid()

代码语言:javascript
复制
ggplot(df, aes(x=Position, y=Value))+
    geom_bar(stat='identity')+
    facet_grid(~group,scales='free')

或者,为了获得更多的控制,您可以尝试创建单独的绘图&使用gridExtra包将它们组合在一起。

代码语言:javascript
复制
#Data
enter df <- as.data.frame(cbind(Position = c(1,2,3,4,5,6,7,8,9,10), 
                      Value = c(11.31, 10.39, 9.50, 6.61, 5.41, 
                                3.88, 3.81, 1.25, 0.70,10.41)))
#Grouping
df$group<-cut(df$Position,breaks=c(0,3,6,9,100),c('0-3','4-6','7-9','10'))

#Creating Individual Plots
p1=ggplot(subset(df,df$group=='0-3'), aes(x=Position, y=Value))+
    geom_bar(stat='identity')+
    ggtitle('0-3')

p2=ggplot(subset(df,df$group=='4-6'), aes(x=Position, y=Value))+
  geom_bar(stat='identity')+
  ggtitle('4-6')

p3=ggplot(subset(df,df$group=='7-9'), aes(x=Position, y=Value))+
  geom_bar(stat='identity')+
  ggtitle('7-9')

p4=ggplot(subset(df,df$group=='10'), aes(x=factor(Position), y=Value,width=Value/10))+
  geom_bar(stat='identity',width=0.7)+
  ggtitle('10')+
  xlab(label='Position')

grid.arrange(p1,p2,p3,p4,ncol=2,nrow=2,main='Plot')
票数 10
EN

Stack Overflow用户

发布于 2014-07-24 21:11:24

这就是你要找的吗?

代码语言:javascript
复制
df <- transform(df, Position=as.factor(Position),
    group=as.factor(findInterval(Position, c(1, 4, 7, 10))))

ggplot(df, aes(x=Position, y=Value, fill=Position)) + 
    geom_bar(stat='identity') + 
    facet_grid(group ~ .)

票数 3
EN

Stack Overflow用户

发布于 2014-07-24 21:19:02

您可能希望使用package CAR的RECODE函数来定义自定义间隔,如下所示:

代码语言:javascript
复制
require(car)
require(ggplot2)
df['series']<-recode(df$Position, "1:3='1-3';4:6='4-6';7:9='7-9';10='10'")
ggplot(df, aes(x=Position, y=Value))+geom_bar(stat='identity')+facet_grid(~series)

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

https://stackoverflow.com/questions/24934137

复制
相关文章

相似问题

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