Я хочу изобразить что-то подобное в R.
Я нашел похожее решение здесь, поэтому я пробовал нечто подобное:
test <- data.frame(person=c("group 1", "group 2", "group 3"),
value1=c(100,150,120), # male
value2=c(25,30,45) , # female
value3=c(25,30,45), # male
value4=c(100,120,150), # female
value5=c(10,12,15), # male
value6=c(50,40,70)) # female
library(reshape2) # for melt
melted <- melt(test, "person")
melted$cat <- ''
melted[melted$variable == 'value1' | melted$variable == 'value2',]$cat <- "sub group 1"
melted[melted$variable == 'value3' | melted$variable == 'value4',]$cat <- "sub group 2"
melted[melted$variable == 'value5' | melted$variable == 'value6',]$cat <- "sub graoup 3"
p = ggplot(melted, aes(x = cat, y = value, fill = variable))
+ geom_bar(stat = 'identity', position = 'stack') + facet_grid(~ person)
Я закончил:
Проблема в том, что теперь у меня есть 6 разных значений с 6 разными цветами. Что мне действительно нужно, так это два разных значения, давайте назовем тему male
и female
, представленную двумя разными цветами.
Как я могу это сделать в R? Данные могут быть созданы любым другим способом (не обязательно использовать data.frame, как указано выше). Мне не нужно использовать ggplot
. На самом деле, я предпочитаю чистый белый фон в примере изображения, чем серый фон, который я получил с помощью ggplot.