facet_grid中同一轴上的离散和连续比例

时间:2013-02-11 14:54:23

标签: r ggplot2 grid-layout facet

我想在facet_grid中使用ggplot2来生成两个在同一轴上具有连续和离散比例的图形 - 基本上我的矢量fac具有数字部分和因子部分。 / p>

toy=data.frame(type=xc("f f f f i i i i"),fac=c(letters[1:4],1:3,40))
ggplot(toy,aes(x=ifelse(type=="f",fac,as.numeric((fac)))))+
   geom_bar()+facet_grid(.~type,scales="free")

但它不起作用,因为ggplot迫使两个尺度都是离散的。  enter image description here

正如您可以从右侧图上的1,2,3,40等间距看到的那样。

1 个答案:

答案 0 :(得分:3)

一列中的两种数据不是表示数据的最佳方式。

更改了列fac的示例数据以获得更好的表示。

toy=data.frame(type=c("f", "f","f", "f", "i", "i", "i", "i"),fac=c(letters[1:4],1,5,7,40))

要获得数值不等的空格,您可以进行两次geom_bar()调用,每次调用都是单独的类型(使用subset=)。对于字母,请使用数据,但对于数字数据,将fac值转换为字符,然后转换为数字。 facet_grid()将确保您有两个情节。 scale_x_discrete()适用于两个方面 - 您只需提供所需的breaks=值。

library(ggplot2)
library(plyr)    
ggplot(data=toy)+
  geom_bar(subset=.(type=="f"),aes(x=fac),width=0.2)+
  geom_bar(subset=.(type=="i"),aes(x=as.numeric(as.character(fac))))+
  facet_grid(.~type,scales="free") + 
  scale_x_discrete(breaks=c("a","b","c","d",1,5,7,40))

enter image description here