Как сделать штриховой график в ggplot2 с горизонтальными и вертикальными столбцами с накоплением?

Мой фрейм данных таков:

data <- data.frame("GROUP"= c(1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3), "C1_PERCENTAGE" = c(0, 10 ,22, 34, 37, 18, 24, 13), "C2_PERCENTAGE"=c(0, 8, 20, 24, 23, 11, 18, 9))

Я хочу создать гистограмму с полосками, уложенными по горизонтали на основе GROUP, чтобы было три группы полос по горизонтали. И по вертикали я хочу сложить стержни на основе C1_PERCENTAGE и C2_PERCENTAGE.

Я хочу использовать ggplot2. Я использовал базовую графику, но это только для C1_PERCENTAGE.

barplot(data$C1_PERCENTAGE, col = as.factor(data$GROUP)

введите здесь описание изображения

Это дает сюжет для C1_PERCENTAGE. Я бы хотел C2_PERCENTAGE также рядом с этими столбиками.


person j1897    schedule 07.06.2016    source источник
comment
Разве это не график плиток?   -  person zx8754    schedule 07.06.2016
comment
Возможно barplot("colnames<-"(t(data)[-1,], data[,1]), beside=TRUE)   -  person akrun    schedule 07.06.2016
comment
Возможный дубликат ggplot2 - столбчатая диаграмма с накоплением   -  person ArunK    schedule 07.06.2016
comment
эта ссылка stackoverflow.com/questions/21236229/ggplot2-stacked-bar- диаграмма должна быть полезной   -  person ArunK    schedule 07.06.2016
comment
Это не то, что я хочу. Пожалуйста, смотрите редактирование   -  person j1897    schedule 07.06.2016
comment
Вам нужно что-то вроде этого?   -  person sebastian-c    schedule 07.06.2016


Ответы (1)


У меня есть два разных варианта.

Сначала нам нужно подготовить данные, (а) добавить идентификатор, (б) преобразовать в длинный формат.

подготовить данные

library(data.table)
d <- data.table(
  "id" = 1:24,
  "GROUP" = c(1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3),
  "C1_PERCENTAGE" = c(0, 10 ,22, 34, 37, 18, 24, 13),
  "C2_PERCENTAGE"=c(0, 8, 20, 24, 23, 11, 18, 9)
  )
ld <- melt(d, id.vars = c("id", "GROUP"))

линейчатая диаграмма с накоплением

library(ggplot2)
ggplot(ld, aes(x = id, y = value, fill = variable)) + 
  geom_bar(stat = "identity", position = "stack")

введите здесь описание изображения

фасетная линейчатая диаграмма

ggplot(ld, aes(x = id, y = value, fill = factor(GROUP))) + 
  geom_bar(stat = "identity", position = "stack") +
  facet_wrap(~ variable, ncol = 1)

введите здесь описание изображения

person Uwe    schedule 07.06.2016
comment
@technOslerphile Спасибо, что приняли мой ответ - но какой из двух вариантов наконец ответил на ваш вопрос / соответствует вашим требованиям. Спасибо. - person Uwe; 07.06.2016
comment
Пришлось отредактировать код фасетированной гистограммы, чтобы он соответствовал графику. - person Uwe; 08.06.2016