2012-04-04 4 views
9

막대 그래프를 생성 중이며 특정 색상으로 특정 그룹의 색상을 지정하고 싶습니다. 여기 내 히스토그램 :ggplot2 막대 그래프의 색상을 수동으로 채우는 방법

enter image description here

내가 14 개 그룹이 내가 처음 7 빨간색, 다음 4 블루, 최종 3 오렌지 색상을하고 싶습니다. ggplot에서 이것을 어떻게 할 수 있습니까? 감사.

+0

난 당신이 막대 그래프가 아닌 히스토그램을 의미 겠지? 거기에 (큰) 차이. – joran

+0

데이터는 불연속 데이터의 주파수 플롯입니다. 'geom_histogram'을 사용하여 그래프를 그렸습니다. 이것이 "가로 막 대형 차트"또는 "개별 막대 그래프"를 구성하는지 확실하지 않습니다. – drbunsen

+2

이 경우 geom_bar를 사용할 것입니다. 그런 다음 원하는 색상 그룹을 정의하는 데이터 프레임에 그룹화 변수가 필요하고이를 '채우기'에 매핑하면됩니다. '? geom_bar'에 몇 가지 예가 있습니다. – joran

답변

12

업데이트 된 버전

그룹화 열을 지정할 필요가 없습니다, ggplot 명령은 훨씬 더 컴팩트.

library(ggplot2) 
set.seed(1234) 

# Data generating block 
df <- data.frame(x=sample(1:14, 1000, replace=T)) 
# Colors 
colors <- c(rep("red",7), rep("blue",4), rep("orange",3)) 

ggplot(df, aes(x=x)) + 
    geom_histogram(fill=colors) + 
    scale_x_discrete(limits=1:14) 

enter image description here

이전 버전

library(ggplot2) 

# 
# Data generating block 
# 
df <- data.frame(x=sample(c(1:14), 1000, replace=TRUE)) 
df$group <- ifelse(df$x<=7, 1, ifelse(df$x<=11, 2, 3)) 

# 
# Plotting 
# 
ggplot(df, aes(x=x)) + 
    geom_histogram(data=subset(df,group==1), fill="red") + 
    geom_histogram(data=subset(df,group==2), fill="blue") + 
    geom_histogram(data=subset(df,group==3), fill="orange") + 
    scale_x_discrete(breaks=df$x, labels=df$x) 

enter image description here

+0

누적 히스토그램을 처리 할 수있는 유일한 방법은''geom_histogram (fill = colors)''접근 방식입니다.'aes (y = cumsum (.. count ../ sum (.. count ..)))'' ''aes' 내부에 채우기를 설정하면 그룹이 겹쳐져 있기 때문입니다. 더 단순한''stat_ecdf'' 방법은''breaks'' 옵션을 취하지 않기 때문에 저에게 효과적이지 않았습니다. 결국이 접근 방식 만 효과가있었습니다. – PatrickT

관련 문제