1

我想用facet_gridinggplot2生成两个在同一轴上具有连续和离散比例的图 - 基本上我的向量fac有一个数字部分和一个因子部分。

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 的等间距可以看出。

4

1 回答 1

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))

在此处输入图像描述

于 2013-02-11T16:31:48.350 回答