데이터 프레임의 요인에서 파생 된 수단으로 ggplot 플롯 막대 차트를 만들기 위해 여러 가지를 시도했지만 성공하지 못했습니다. 고려 사항 :
df <- as.data.frame(matrix(rnorm(60*2, mean=3,sd=1), 60, 2))
df$factor <- c(rep(factor(1:3), each=20))
다음과 같이 누적 된 상대 막대 차트를 얻고 싶습니다.
이 차트는 별도의 데이터 프레임에서 그룹 평균을 수동으로 계산하여 녹여 및을 사용 geom_bar(stat="identity", position = "fill)
하여 생성되었습니다 scale_y_continuous(labels = percent_format())
. 누적 막대 차트와 함께 stat_summary를 사용하는 방법을 찾지 못했습니다.
두 번째 단계에서는 각 열의 나누기에 오류 막대를 연결하고 싶습니다. 나는 6 개의 치료법과 3 개의 종을 가지고 있으므로 오차 막대는 괜찮을 것입니다.
이렇게 복잡한 경우에는 숫자를 미리 계산 한 다음 플로팅하는 것이 더 쉽다고 생각합니다. dplyr / tidyr (오류 막대 포함)를 사용하면 쉽게 수행 할 수 있습니다.
gather(df, 'cat', 'value', 1:2) %>%
group_by(factor, cat) %>%
summarise(mean=mean(value), se=sd(value)/sqrt(n())) %>%
group_by(cat) %>%
mutate(perc=mean/sum(mean), ymin=cumsum(perc) -se/sum(mean), ymax=cumsum(perc) + se/sum(mean)) %>%
ggplot(aes(x=cat, y=perc, fill=factor(factor))) +
geom_bar(stat='identity') +
geom_errorbar(aes(ymax=ymax, ymin=ymin))
물론 이것은 누적 막대에 약 100 %의 오차 막대가 있기 때문에 약간 이상하게 보입니다. 실제 데이터 포인트와 평균 및 오차 막대를 플로팅하고 패싯을 사용하는 것이 더 나을 것이라고 생각합니다.
gather(df, 'cat', 'value', 1:2) %>%
group_by(cat, factor) %>%
summarise(mean=mean(value), se=sd(value)/sqrt(n())) %>%
ggplot(aes(x=cat, y=mean, colour=factor(factor))) +
geom_point(aes(y=value), position=position_jitter(width=.3, height=0), data=gather(df, 'cat', 'value', 1:2) ) +
geom_point(shape=5, size = 3) +
geom_errorbar(aes(ymin=mean-se, ymax=mean+se), width=.1) +
facet_grid(factor ~ .)
이렇게하면 누구나 데이터를 검사하고 데이터가 정상적으로 분포되어 있는지 확인할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다