Переупорядочить кластеры в столбчатой ​​диаграмме с накоплением, используя ggplot - PullRequest
0 голосов
/ 30 ноября 2018

Допустим, у меня есть эти наборы данных:

test  <- data.frame(person=c("0-4", "5-9", "10-14"), 
                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

Используя ggplot2, я создаю кластеризованную столбчатую диаграмму с накоплением.Мой код R это:

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 group 3"
melted$gender <- ''
melted[melted$variable %in% sprintf("value%i",c(1,3,5)),]$gender <- "female"
melted[melted$variable %in% sprintf("value%i",c(2,4,6)),]$gender <- "male"


p = ggplot(melted, aes(x = cat, y = value, fill = gender)) 

p + geom_bar(stat = 'identity', position = 'stack') +   facet_grid(~ person) + 
scale_fill_manual(values = c("orangered","dodgerblue2")) + 
theme(panel.background = element_rect(fill = 'white'))

У меня есть следующий график:

enter image description here

Как вы можете видеть, что группа людейрасположены как 0-4, 10-14, 5-9.Я хочу, чтобы это было организовано как 0-4, 5-9, 10-14.Я проверил str(), и он показывает переменную как факторы.У меня вопрос:

  1. Любая идея о том, как переупорядочить переменную person в 0-4, 5-9, 10-14?
  2. Как я могу назвать заголовок моего графика, xось, а ось у?

1 Ответ

0 голосов
/ 30 ноября 2018

Это то, что вам нужно, чтобы изменить порядок вашей сетки:

levels(melted$person) <- c("0-4", "5-9", "10-14") # change the order of the levels 

Если вы не знаете, как изменить порядок factor, всегда печатайте levels и смотрите, как они упорядочены..

С помощью labs вы можете изменить ось и заголовок:

p = ggplot(melted, aes(x = cat, y = value, fill = gender)) 

p + geom_bar(stat = 'identity', position = 'stack') +   facet_grid(~ person) + 
  scale_fill_manual(values = c("orangered","dodgerblue2")) + 
  theme(panel.background = element_rect(fill = 'white')) + 
  labs(title="abc title", x="aaa",y="bbb") 
  #+theme(plot.title = element_text(hjust = 0.5)) # center title

enter image description here

...