[R] ggplot2로 bin 범위가 다른 히스토그램 그리기 (histogram with different bin width using R ggplot2)
R 분석과 프로그래밍/R 그래프_시각화 2019. 2. 17. 23:44일반적으로 R ggplot2로 히스토그램을 그릴 때 동일한 폭의 bin 넓이(bin width)를 설정해줍니다.
이번 포스팅에서는 R ggplot2로 bin의 넓이를 다르게 설정한 히스토그램 그리는 방법을 소개하겠습니다. (histogram with different bin width using R ggplot2)
간단한 예제 데이터프레임을 만들어서 예를 들어보았습니다. 요점은 사용자가 정의한 binwidth에 해당하는 group 변수를 하나 만들구요, geom_histogram() 함수로 히스토그램을 그릴 때 group 별로 subset을 하고 breaks argument로 사용자가 정의한 binwidth 구간을 설정해주는 것입니다.
#---------------- # histogram with variable size of bin width and different colors per bins using ggplot2 #---------------- # sample data frame mydf <- data.frame(var = c(1100, 10000, 100000, 190000, 110000, 220000, 550000, 701000, 790000)) # numeric notation for large numbers options(scipen = 30) library("ggplot2") # fill color with different colors per bins mydf$group <- ifelse(mydf$var < 10000, 1, ifelse(mydf$var < 100000, 2, ifelse(mydf$var < 200000, 3, ifelse(mydf$var < 500000, 4, 5)))) # breaks of bin bins <- c(1000, 10000, 100000, 200000, 500000, 800000) # draw histogram with variable size of bin width and different colors per bins ggplot(mydf, aes(x= var)) + geom_histogram(data=subset(mydf, group==1), breaks = c(1000, 10000), fill="black") + geom_histogram(data=subset(mydf, group==2), breaks = c(10000, 100000), fill="yellow") + geom_histogram(data=subset(mydf, group==3), breaks = c(100000, 200000), fill="green") + geom_histogram(data=subset(mydf, group==4), breaks = c(200000, 500000), fill="blue") + geom_histogram(data=subset(mydf, group==5), breaks = c(500000, 800000), fill="red") + scale_x_continuous(breaks = bins, limits = c(1000, 800000)) + xlab("variable 1") + ylab("count") + ggtitle("Histogram with different size of bin width and colors") + theme(plot.title = element_text(hjust = 0.5, size = 14))
|
많은 도움이 되었기를 바랍니다.
이번 포스팅이 도움이 되었다면 아래의 '공감~'를 꾹 눌러주세요. :-)
'R 분석과 프로그래밍 > R 그래프_시각화' 카테고리의 다른 글
[R] 반복문 프로그램 진행 경과 막대로 나타내기 (progress bar) (1) | 2021.01.23 |
---|---|
[R] ggplot2 의 커널 밀도 곡선(Kernel Density Curve)의 최대 피크값 좌표구하고 수직선 추가하기 (2) | 2019.10.03 |
[R] ggplot으로 이중축 그래프 그래기 (dual y-axes plot using ggplot2) (4) | 2018.06.16 |
클리브랜드 점 그래프 (KRUG 2017.11.18 주말 퀴즈) (2) | 2017.11.18 |
[R] ggplot 그래프 크기 조정, 가로 세로 비율 조정 : coord_fixed(ratio = 2, 1, 0.5) (0) | 2017.09.09 |