ggplot2直方图在使用facet_grid时会改变图表吗?

时间:2012-05-09 18:43:28

标签: r ggplot2

我正试图解决为什么在添加facet_wrap时使用qplot的直方图发生变化的原因。您可以找到我用于此示例的数据here

我的facet_grid中的因素来自于使用cut

library(ggplot2)
data <- read.csv("data.csv")
data$cuts <- cut(data$y, c(0, 50, 100, 500, Inf))

现在我有了这个:

> summary(data)
       y                 x                cuts    
 Min.   :  10.00   Min.   :0.000   (0,50]   :530  
 1st Qu.:  20.75   1st Qu.:1.000   (50,100] :179  
 Median :  46.00   Median :1.000   (100,500]:258  
 Mean   : 110.18   Mean   :0.834   (500,Inf]: 33  
 3rd Qu.: 121.00   3rd Qu.:1.000                  
 Max.   :1526.00   Max.   :1.000                  

如果我只查看cuts=="(0,50]"的部分,它看起来很好。:

qplot(x, data=subset(data, cuts=="(0,50]"))

但是当我添加一个构面网格时,y轴都是错误的:

qplot(x, data=data) + facet_grid(cuts~., scales="free_y")

请注意,顶部刻面上的y轴现在只有40码而不是450.唯一似乎正确的方面是(500,Inf]

编辑:我在R 2.14.2中使用ggplot 0.9.0

2 个答案:

答案 0 :(得分:3)

ggplot 9.1大约一天前发布,这个包已经在该软件包发布中得到了解决。所以我的答案是下载ggplot2 0.9.1错误修复版本。

此外,您可能希望使用right中的geom_histogram参数,如下所示:geom_histogram(binwidth = 0.2, right = TRUE) +

答案 1 :(得分:1)

似乎是桑迪指示的ggplot facet_grid“忽略重复行”错误。一个简单的解决方法是添加这个do-nothing行,

data$index = seq.int(1,1000,1)

让每一行都独一无二,你得到你想要的东西。