2013-04-08 23 views
6

我正在尝试使用ggplot2制作R基础图的更好的版本。不仅有一个共同的传说,而且因为我喜欢ggplot2风格和定制。我的数据由3个独立的数据集组成,这些数据集包含几个(但不同的)治疗的相同两组观察值。因此,我想用1个图表生成3个独立的图表,但是具有不同的因子水平。为了说明我的观点在这里的第一个图像是我用R基本到目前为止已经产生: r base plot closest plot realisation删除ggplot2中具有多个构面的聚集条形图中的空因子

我试图生成虚拟数据GGPLOT2情节恰好具有相同的结构,我的数据:

foo<-data.frame(c(letters,letters),c(rep('T1',26),rep('T2',26)), 
runif(52),rep(c(rep('Ori1',12),rep('Ori2',8),rep('ori3',6)),2)) 
names(foo)<-c('Treatment','Type','Count','Origin') 

a<-ggplot(foo,aes(x = factor(Treatment),y = Count)) 
a+ facet_grid(Origin~., scales="free_y", space="free") + 
geom_bar(stat="identity",aes(fill=factor(foo$Type)),position="dodge") 
+theme_bw()+theme(axis.text.x=element_text(angle=60,hjust=1))+coord_flip() 

这给我以下不良结果。 failed ggplot2 image

我知道的堆栈溢出主题Removing Unused Factors from a Facet in ggplot2How can I remove empty factors from ggplot2 facets?然而,他们不与群集条形图我试图在这里实现处理,我觉得他们的问题,但是现在不如何解决它。所有的指针都是受欢迎的。

+3

我相信,除非这个问题得到解决(这很复杂),否则您会忽略'coord_flip'并使用'facet_wrap(〜Origin,scales =“free_x”)''。 – joran 2013-04-08 19:54:54

+0

@joran谢谢你的评论,但它并没有解决问题......'coord_flip'并没有真正促成这个问题,我只是将它包括在内,因为我喜欢这种格式的情节。主要问题是如何在各个方面保留'position =“dodge”''。也许我应该清楚地表明,我并不真正想重现基本图,因为我只想让图的本质在ggplot2风格中可用。 – 2013-04-08 20:03:27

+1

我不认为你真的尝试过我所提议的。关键是,目前'coord_flip'并不总是和'scales =“free”'很好地搭配。这是一个已知的问题。 – joran 2013-04-08 20:08:25

回答

7

为了说明我的意见:

a<-ggplot(foo,aes(x = factor(Treatment),y = Count)) 
a+ facet_wrap(~Origin, scales="free_x") + 
    geom_bar(stat="identity",aes(fill=factor(Type)),position="dodge") + 
    theme_bw() + 
    theme(axis.text.x=element_text(angle=60,hjust=1)) 

enter image description here

请注意,如果您添加coord_flip并切换到free_y你得到一个关于coord_flip特定错误与某些类型的无鳞的工作,这是你的问题来源。

+1

为什么'fill = factor(foo $ Type)'中有'foo $''。这不是正确的吗?它实际上改变了我的想法:“ggplot(data = foo,aes(x = factor(Treatment),y = Count))+ geom_bar(stat =”identity“,aes(fill = factor类型)),position =“dodge”)+ theme_bw()+ facet_grid(〜Origin,scales =“free”,space =“free”)' – Arun 2013-04-08 20:17:05

+1

@Arun你说的对,我只是复制粘贴他们的代码,并专注于放弃未使用的因素。 – joran 2013-04-08 20:21:24

+0

谢谢你们两位!显然起源〜。在原始facet.wrap没有生成我想要的,但我也有错误,只是使用Type而不是foo $ Type(应该是相同的,对吗?)。 @阿伦:你的评论正是我想要的。 @joran:谢谢你用'coord_flip'来指出这个常见的错误......然后我会坚持正常的堆叠barplot。 – 2013-04-08 20:42:50

相关问题