2013-12-20 3 views
0

Я хочу создать сложную гистограмму, отображающую canceled == TRUE внизу и canceled == FALSE сверху. Хотя я не могу понять это. Любые идеи, как я могу это сделать с помощью ggplot2, сохраняя при этом фасетную обертку вокруг источника?Как создать сложную гистограмму w/ggplot2?

Вот что я в настоящее время:

ggplot(data, aes(x=days, fill="canceled")) + 
    geom_histogram(binwidth=1, position="stack") + 
    facet_wrap(~source, ncol=2, scale="free_y") + 
    coord_cartesian(xlim=c(0, 21)) 

Мои данные:

days,source,canceled 
1,ABC,TRUE 
1,ABC,FALSE 
1,ABC,TRUE 
2,ABC,FALSE 
2,XYZ,FALSE 
+0

Это было перенесено из stats.stackexchange.com. Если бы я разместил здесь, это было бы перенесено на статистику. Не может победить. – Bradford

+0

Нет, это действительно вопрос программирования ... –

ответ

1

Ну, вы должны, по крайней мере, начало, удаляя кавычки из вокруг слова «отменено» в команде ggplot , Это приводит к тому, что значения TRUE и FALSE окрашиваются по-разному и сложены друг над другом, что лучше, чем у вас раньше, однако оно по-прежнему накладывает TRUE сверху и FALSE на дно, в противоположность тому, что вы просили. Я не уверен, как управлять порядком укладки (вы, в конце концов, предположительно используете ggplot2 в первую очередь для того, чтобы делегировать многие из этих подробных решений для отображения низкого уровня), но это, по крайней мере, решает половину вашей проблемы , Моя очень измененная версия вашего кода и отображаемый результат добавляются ниже. ggplot results for histogram stacking example

library(ggplot2) 

days <- c(1, 1, 1, 2, 2) 
source <- c("ABC", "ABC", "ABC", "ABC", "XYZ") 
canceled <- c(TRUE, FALSE, TRUE, FALSE, FALSE) 

data <- data.frame(days, source, canceled) 

print(ggplot(data, aes(x=days, fill=canceled)) + 
      geom_histogram(binwidth=1, position="stack") + 
      facet_wrap(~source, ncol=2, scale="free_y") + 
      coord_cartesian(xlim=c(0, 21))) 
2

Как вам нужно, чтобы получить различные значения заполнения от переменной canceled, то она должна быть использована без кавычек. Чтобы получить укладку в обратном порядке, вы можете использовать аргумент order= и установить отрицательный для canceled.

ggplot(data, aes(x=days, fill=canceled,order=-canceled)) + 
    geom_bar(binwidth=1, position="stack") + 
    facet_wrap(~source, ncol=2, scale="free_y") + 
    coord_cartesian(xlim=c(0, 21)) 
Смежные вопросы