3

我试图弄清楚为什么当我添加 facet_wrap 时使用 qplot 的直方图会发生变化。您可以在此处找到我用于此示例的数据

我的 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 轴现在只有 40ish 而不是超过 450。唯一看起来正确的刻面是(500,Inf]

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

4

2 回答 2

3

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

此外,您可能希望使用以下right参数geom_histogramgeom_histogram(binwidth = 0.2, right = TRUE) +

于 2012-05-09T21:18:52.887 回答
1

正如 Sandy 所指出的,这似乎是 ggplot facet_grid “忽略重复行”错误。一个简单的解决方法是添加这个无所事事的行,

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

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

于 2012-05-09T20:15:26.830 回答