我想在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
迫使两个尺度都是离散的。
正如您可以从右侧图上的1,2,3,40等间距看到的那样。
答案 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))