2017-05-02 1 views
0

임 그룹화 변경하는 방법 : 해당 게시물에서 How to produce stacked bars within grouped barchart in R수동으로 누적 + 그룹화 ggplot 막대 차트의 단지 스택 부분 그룹화 및 누적 막대 차트의 작성이 게시물에 주어진 예를 들어 다음과 같은

을 :

library(reshape2) 
library(dplyr) 
library(ggplot2) 

test <- data.frame(person=c("A", "B", "C", "D", "E"), 
       value1=c(100,150,120,80,150),  
       value2=c(25,30,45,30,30) , 
       value3=c(100,120,150,150,200)) 


melted <- melt(test, "person") 

melted$cat <- '' 
melted[melted$variable == 'value1',]$cat <- "first" 
melted[melted$variable != 'value1',]$cat <- "second" 


ggplot(melted, aes(x = cat, y = value, fill = variable)) + 
geom_bar(stat = 'identity', position = 'stack') + 
facet_grid(~ person) 

위와 같이 플롯은 value3의 맨 위에 value2를 정렬합니다.

내가하려는 것은 스택 부분의 순서를 변경하는 것입니다. value2를 value2 위에 놓고 싶습니다.

필자 수동 가변 순서 변경 시도 :

melted2 <- melted %>% 
    arrange(desc(variable)) 

ggplot(melted2, aes(x = cat, y = value, fill = variable)) + 
geom_bar(stat = 'identity', position = 'stack') + 
facet_grid(~ person) 

을하지만 플롯 출력 첫번째 동일 보인다. 본질적으로, 입력 데이터의 재정렬은 그 작업을 성취하지 못합니다.

미리 감사드립니다.

+0

[ggplot2에서 ID를 사용하여 누적 막 대형 차트의 순서를 제어하는 ​​방법] (http://stackoverflow.com/questions/32345923/how-to-control-ordering-of-stacked-bar-chart-using) -identity-on-ggplot2) 또는 [this] (http://stackoverflow.com/questions/8186436/order-stacked-bar-graph-in-ggplot) 또는 [해당] (http://stackoverflow.com/questions/7150453/order-categorical-data-in-a-stacked-bar-plot-ggplot2) – Jimbou

+0

내 게시물을 읽으십시오. 나는 그 포스트에서 보여지는 것처럼 재정렬을 시도했다. –

+0

레벨을 재정렬했다는 표시는 없습니다. 바로 값입니다. 명시 적으로 요인 수준을 주문해야합니다. '? factor' 또는'? reorder'를 시도하십시오. –

답변

1

당신이 이러한 싶습니다 정확히 어떤 순서로 나에게 분명하지 않다하지만이 작업을해야하지만 당신이 달성하기 위해 수준을 사용할 수 있습니다.

melted$variable <- factor(melted$variable, levels = c("value1","value3","value2")) 

ggplot(melted, aes(x = cat, y = value, fill = variable)) + 
geom_bar(stat = 'identity', position = 'stack') + 
facet_grid(~ person) 

당신이 전에 사용이 방식은 단지를 배치를 값을 순서대로 나열합니다.

melted2 <- melted %>% 
    arrange(desc(variable)) 

연속 벡터의 경우 더 잘 작동합니다. 실제로 요인의 수준을 변경해야합니다. 다음을 사용하여 레벨을 확인할 수 있습니다이 :

levels(melted$variable) 

[1] "값 1" "VALUE3" "값 2"

melted$variable

이미 요인이었다하지만 당신은 단지에 기본 수준을 재정의 할 필요를 네가 원했던 것.

+0

완벽! 그랬어. 나는 3 분 안에 대답을 받아 들일 것이다. –

관련 문제