2012-05-09 3 views
3

Я пытаюсь обвести голову, почему гистограмма с использованием qplot меняется, когда я добавляю facet_wrap. Вы можете найти данные, я использовал для этого примера hereГистограмма ggplot2 изменяет график при использовании facet_grid?

факторы в моем 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]")) 

Но когда я добавить фасетов сетку, у-оси все неправильно:

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

Обратите внимание, что ось у на верхней грани теперь только 40ish вместо более 450. Единственный аспект, который кажется правильным, - (500,Inf].

редактировать: Я использую ggplot 0.9.0 в R 2.14.2

+2

Эффект может быть связано с известной ошибкой в ​​'ggplot2 0.9.0' при использовании' facet_grid' - [смотрите здесь] (http://groups.google.com/group/ggplot2/browse_thread/thread/5bca619044956927). Новая версия будет выпущена с исправленной ошибкой - [см. Здесь] (http://groups.google.com/group/ggplot2/browse_thread/thread/860293253a9d0cc8) –

ответ

1

Это кажется ggplot facet_grid «игнорируя дубликаты строк» ​​ошибка, как Сэнди указывает. Простая работа заключается в том, чтобы добавить эту линию do-nothing,

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

Чтобы сделать каждую строку уникальной, и вы получите то, что хотите.

3

ggplot 9.1 был выпущен около дня назад, и об этом позаботились в этом выпуске пакета. Поэтому мой ответ - загрузить версию исправления ошибок ggplot2 0.9.1.

Кроме того, вы можете играть с right аргументом в geom_histogram как в: geom_histogram(binwidth = 0.2, right = TRUE) +

Смежные вопросы