2014-11-01 18 views
0

ggplot2 docs 웹 사이트 및 기타 질문을 읽었지만 해결책을 찾을 수 없습니다. 다양한 연령대의 데이터를 시각화하려고합니다. 나는 그 일을 할 수있는 일종의 일을 가졌지 만 내가 의도 한 것처럼 보이지는 않는다. 여기 누적 막대 그래프 채우기 ggplot2

내 음모에 대한 코드입니다

p <- ggplot(suggestion, aes(interaction(Age,variable), value, color = Age, fill = factor(variable), group = Age)) 
p + geom_bar(stat = "identity")+ 
    facet_grid(.~Age)![The facetting separates the age variables][1] 

내 궁극적 인 목표 내가 채우기를 사용하는 이유 만든 스택 막대 그래프로이지만, 해당 연령 그룹의 TDX 값을 넣어하지 않습니다 년. (때로는 TDX는 == DX 값을 값,하지만 난 그렇지 않은 경우 시각화 할) Trying to fill TDX values into DX values

여기 그것은 당신이 그러나 아마이 필요 불분명 년대 dput(suggestion)

structure(list(Age = structure(c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 
1L, 2L, 3L, 4L, 5L, 6L, 7L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 1L, 2L, 
3L, 4L, 5L, 6L, 7L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 1L, 2L, 3L, 4L, 
5L, 6L, 7L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 1L, 2L, 3L, 4L, 5L, 6L, 
7L), .Label = c("0-2", "3-9", "10-19", "20-39", "40-59", "60-64", 
"65+", "UNSP", "(all)"), class = "factor"), variable = structure(c(1L, 
1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 
8L, 8L, 8L, 8L, 8L, 8L, 8L), .Label = c("Year.10.DX", "Year.11.DX", 
"Year.12.DX", "Year.13.DX", "Year.10.TDX", "Year.11.TDX", "Year.12.TDX", 
"Year.13.TDX"), class = "factor"), value = c(26.8648932910636, 
30.487741796656, 31.9938838749782, 62.8189679326958, 72.8480838120064, 
69.3044125928752, 36.9789457527416, 21.808001825378, 24.1073451428435, 
40.3305134762935, 70.4486116545885, 68.8342676191755, 63.9227718107745, 
34.6086468618636, 8.84033719571875, 13.2807072303835, 28.4781516422802, 
55.139497471546, 59.7230544500003, 67.9448927372699, 37.7293286937066, 
6.9507024051526, 17.4393054963572, 33.1485743479821, 61.198647580693, 
58.6845873573852, 48.0073013177248, 28.4455801248562, 26.8648932910636, 
19.8044453272475, 23.0189084635948, 53.7037832071889, 60.6516550126422, 
58.1573725886767, 27.0791868812255, 21.808001825378, 19.8146296425633, 
35.0587750051557, 62.3308555053346, 59.3299998610862, 56.5341245769817, 
27.7229319271878, 8.84033719571875, 13.2807072303835, 22.4081606349585, 
48.0252683906252, 52.7560684009579, 65.2890977685045, 32.4142337849399, 
6.9507024051526, 15.2833655677215, 24.5268503180754, 52.536784326675, 
51.4100599515986, 40.9609231655724, 18.1306673637441)), row.names = c(NA, 
-56L), .Names = c("Age", "variable", "value"), class = "data.frame") 
+0

당신은 geom_bar (위치 = '채우기')'와 barplots을 쌓아 만들 수 있습니다'하지만 당신이 원하는 왜 내가 모르는 당신은 here-- 모든 계층화/패 시팅을 수행 한 후 당신은 각 막대 하나의 색상과 꽤 의미가 끝날거야 – rawr

+0

안녕하세요 @ RAW 귀하의 의견에 감사드립니다. 그래, 네가 옳다고 생각하는 자리에 대해 = 유용하다. "유용하다". 나는 질병으로 진단 받으면 시각화하는데 도움이되기 때문에 가치를 채우기 위해 노력하고있다. - TDX – user3900661

답변

1

입니다.

enter image description here

따로 TDX와 DX 항목을 시각화하려면

ggplot(a,aes(x=variable,y=value,fill=Age)) + geom_bar(stat='identity')  
+facet_wrap(~Age) 

, 우리는 dataframe을 약간 변경해야합니다.
> head(a) 
Age variable value 
1 0-2 Year.10.DX 26.86489 
2 3-9 Year.10.DX 30.48774 
3 10-19 Year.10.DX 31.99388 
4 20-39 Year.10.DX 62.81897 
5 40-59 Year.10.DX 72.84808 
6 60-64 Year.10.DX 69.30441 

관심 variable의 열

는 올해와 TDX/DX 값의 조합입니다. tidyr 패키지를 사용하여이를 두 개의 열로 구분합니다. 우리가 .에 분할 문자 . 각 항목에 두 번 표시하기 때문에

library(tidyr) 
library(dplyr) 
tidy_a<- a %>% separate(variable, into = c('nothing',"year",'label'), sep = "\\.") 

이 실제로 세 가지 구성 요소로 열 variablelevels을 분할합니다.

> head(tidy_a) 
Age nothing year label value 
1 0-2 Year 10 DX 26.86489 
2 3-9 Year 10 DX 30.48774 
3 10-19 Year 10 DX 31.99388 
4 20-39 Year 10 DX 62.81897 
5 40-59 Year 10 DX 72.84808 
6 60-64 Year 10 DX 69.30441 

그래서 열 nothingseparate를 사용 .을 분리에 필요한 단지 결과 다소 쓸모. 이제 TDX/DX를 별도로 시각화 할 수 있습니다.

ggplot(tidy_a,aes(x=year,y=value,fill=label)) + geom_bar(stat='identity') + facet_wrap(~Age) 

enter image description here

+0

감사합니다. @keegan, 두 번째 해결책은 훌륭해 보입니다. TDX 값이 해당 DX 값을 채울 수 있도록 어떻게 수정할 수 있는지 알고 있습니까? "값을 채우기 위해 노력하고 있습니다. 질병으로 진단받는 경우 시각화하는데 도움이됩니다. DX와 DX를 얼마나 많이 치료할 것입니까? TDX" – user3900661

+0

흠, 여기에 무슨 뜻인지 모르겠습니다. 나는 TD라고 불리는 것을 보지 못했고 DX 만 보았습니다. 수준 참조 ($ 변수)는 "Year.10.DX" "Year.11.DX" "Year.12.DX" "Year.13.DX" – keegan

+0

을 반환합니다. 틀림없이 틀린 값을 넣었 으면 좋겠네요. 지금 무슨 뜻인지 보렴 – user3900661

관련 문제