'get all cominations of col_list with length 2'에 해당되는 글 1건

  1. 2019.02.17 [R] ggplot2로 bin 범위가 다른 히스토그램 그리기 (histogram with different bin width using R ggplot2) 4

일반적으로 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))


 



많은 도움이 되었기를 바랍니다. 


이번 포스팅이 도움이 되었다면 아래의 '공감~'를 꾹 눌러주세요. :-)



728x90
반응형
Posted by Rfriend
,