필요 파일 준비
Code
air_hour_18_global <- readRDS ("air_hour_18_global.RDS" )
air_hour_18n <- readRDS ("air_hour_18n.RDS" )
air_hour_10y <- readRDS ("air_hour_10y.RDS" )
air_hour_18spring <- readRDS ("air_hour_18spring.RDS" )
air_hour_April6 <- readRDS ("air_hour_April6.RDS" )
Mise Visualization
미세 먼지와 초미세 먼지의 상관관계 (air_hour_18n, air_hour_18_global 사용 )
Code
── Attaching packages ─────────────────────────────────────── tidyverse 1.3.2 ──
✔ ggplot2 3.4.0 ✔ purrr 1.0.0
✔ tibble 3.1.8 ✔ dplyr 1.0.10
✔ tidyr 1.2.1 ✔ stringr 1.5.0
✔ readr 2.1.4 ✔ forcats 0.5.2
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag() masks stats::lag()
Code
theme_set (theme_grey (base_family= 'NanumGothic' ))
air_hour_18_global<- select (air_hour_18n,time,pm10,pm2.5 ,place_name1)
air_hour_18_global$ place_name1 <- as.factor (air_hour_18_global$ place_name1)
plot (air_hour_18_global)
pm10 vs. pm2.5 (micro meter 단위)
Code
ggplot (air_hour_18_global, aes (pm10,pm2.5 )) + geom_point (color= "blue" , alpha= 0.05 )+ geom_hline (yintercept = c (15 ,35 ,57 ),color= "grey" )+ geom_vline (xintercept = c (30 ,80 ,150 ),color= "green" )
미세먼지가 많으면 대체로 초미세 먼지도 비례 해서 많다. 하지만 두 값의 평가 기준이 다르다. 기준값 이상의 초미세먼지가 기준 이상의 미세 먼지 보다 훨씬 많이 관측된다. 주로 측정치 100이하에 집중되어 있다. 일부 값은 미세먼지가 많아도 초미세 먼지는 상대적으로 적은 측정값도 있다. 왜? 어디? –> 시점 요인이 있을 것으로 예상함.
측정소별 미세 먼지 상관관계 시각화
Code
ggplot (air_hour_18_global,aes (pm10,pm2.5 )) + geom_point ( aes (color= place_name1))
컬러가 레이어로 겹쳐져 비교가 어려움. 대체적으로 장소에 따라 고루 분포함
Code
ggplot (air_hour_18_global,aes (pm10,pm2.5 )) + geom_point (alpha= 0.1 , aes (color= place_name1))+ facet_wrap (~ place_name1,nrow= 5 )+ labs (x= "미세먼지 10이하" , y= "초미세먼지 2.5이하" , color= "측정소" )
장소별 먼지량의 상관관계는 서로 유사함. 미세먼지와 초미세먼지 분포가 거의 비례하는 곳:금천,동작,양천,용산 등
시간별 미세/ 초미세 먼지 분포
Code
ggplot (air_hour_18_global,aes (time,pm10)) + geom_point (alpha= 0.1 , aes (color= place_name1))+ labs (x= "2018년 미세먼지 현황" , y= "미세먼지 10이하" , color= "측정소" )
Code
ggplot (air_hour_18_global,aes (time,pm10)) + geom_line (alpha= 0.1 , aes (color= place_name1))+ labs (x= "2018년 미세먼지 현황" , y= "미세먼지 10이하" , color= "측정소" )
전체적으로 4월, 12월 구간이 높고, 여름이 미세먼지가 약함
Code
ggplot (air_hour_18_global,aes (time,pm2.5 )) + geom_line (alpha= 0.1 , aes (color= place_name1))+ labs (x= "2018년 초미세먼지 현황" , y= "초미세먼지 2.5이하" , color= "측정소" )
초미세먼지도 1분기, 4분기가 많은 편, 일별로 변동 심함
Code
ggplot (air_hour_18_global,aes (time,pm2.5 )) + geom_line ()+ labs (x= "2018년 초미세먼지 현황" , y= "초미세먼지 2.5이하" )+ facet_wrap (~ place_name1,nrow= 5 )
지역별 차이를 잘 알아보기 어려움
지역 구분 없이 미세먼지와 초미세먼지 같이 그리기
Code
ggplot (air_hour_18_global) + geom_line (aes (time,pm10),color= "red" ,alpha= 0.1 )+ labs (x= "2018년 미세먼지 현황" , y= "미세먼지량" )+ geom_line (aes (time,pm2.5 ),color= "blue" ,alpha= 0.1 )
그래프가 너무 복잡함 –>측정값 단순화 필요 (측정치를 일단위로)
x축을 한달 기준으로 하여 월별 그래프 그리기
Code
ggplot (air_hour_18n,aes (x= day,y= pm10)) + geom_line (alpha= 0.5 , aes (color= month))+ labs (x= "2018년 일별 미세먼지 측정량" , y= "검출량" , color= "측정월" )
월별, 일별 검출량 차이가 유의미하게 보임
Code
ggplot (air_hour_18n,aes (x= day,y= pm10)) + geom_line (alpha= 0.5 ,color= "blue" )+ labs (x= "2018년 일별 미세먼지 측정량" , y= "검출량" )+ facet_wrap (~ month,nrow= 4 )
전체적으로 미세먼지가 적은날은 시간별 차이도 적은 편임 (3분기 참조) 검출량이 많은날은 시간별 차이도 큼 우리나라 환경기준은 연평균, 일평균 값으로 기준을 판단함. 미세먼지 기준(일평균) 30(좋음), 80(보통),~150(나쁨), 이상(매우나쁨) 초미세먼지 기준(일평균) 15(좋음), 35(보통),~75(나쁨), 이상(매우나쁨) 기준선 추가필요! 연노랑 면적이상: 미세먼지 나쁨 기준
Code
ggplot (air_hour_18n,aes (x= day,y= pm10)) + geom_rect (xmin= - Inf ,xmax= Inf ,ymin= 80 ,ymax= 150 , fill= 'lightyellow' ) + geom_line (alpha= 0.5 ,color= "blue" )+ labs (x= "2018년 일별 미세먼지 측정량" , y= "검출량" )+ facet_wrap (~ month,nrow= 4 )
1~5월은 미세먼지 현황이 확연하게 나쁘고, 6~9월은 나쁘기 않다. 10~12월은 가끔 나쁜날이 있다. 1-5월이 서비스가 꼭 필요, 10-12월은 가끔 알림 필요 이게 매년 그런지 볼 필요 있음. —> 시즌에 따라 앱 상태 정보 다른 디자인, 10년간 추이조사 필요
air_hour_18n을 사용하여 월별 그래프 그리기
Code
ggplot (air_hour_18n,aes (x= pm10,)) + geom_freqpoly ()+ facet_wrap (~ month,nrow= 4 )
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
이 데이터는 별로 의미 없음. 한 측정일에도 데이터가 급변하여 측정량 적은 기록이 많음.
10년 추이조사
Code
ggplot (air_hour_10y) + geom_point (aes (time,pm10),color= "red" ,alpha= 0.1 )+ labs (x= "10년 미세먼지 현황" , y= "미세먼지량" )+ geom_hline (yintercept = c (30 ,80 ,150 ),color= 'grey' )
미세먼지량이 반복적으로 년말~차년 상반기 부근에 높아짐을 확인, 아주 나쁜 기간 존재
Code
ggplot (air_hour_10y) + geom_point (aes (time,pm2.5 ),color= "blue" ,alpha= 0.1 )+ labs (x= "10년 초미세먼지 현황" , y= "미세먼지량" )+ geom_hline (yintercept = c (15 ,35 ,75 ),color= 'grey' )
계절 차이가 상대적으로 크지는 않으나 상반기 1-4월즈음의 양이 나쁨 이상임. 연간 차이가 크지 않음
18년 1~5월, 4월6일 데이터 추이에 집중
Code
ggplot (air_hour_18spring,aes (x= day,y= pm10)) + geom_rect (xmin= - Inf ,xmax= Inf ,ymin= 80 ,ymax= 150 , fill= 'grey' ) + geom_point (alpha= 0.5 ,color= "blue" )+ labs (x= "2018년 1~5월 일별 미세먼지 측정량" , y= "검출량" )+ facet_wrap (~ month,nrow= 5 )
미세먼지가 많은 날은 하루 측정치의 편차도 매우 큼을 볼수 있다. 미세먼지가 가장 많았던 4월 6일을 자세히 보며, 하루 변화량 조사 필요!
Code
ggplot (air_hour_April6,aes (time,pm10)) + geom_rect (xmin= - Inf ,xmax= Inf ,ymin= 80 ,ymax= 150 , fill= 'grey' )+ geom_line (aes (color= place_name1))+ labs (x= "2018년 4월 6일 미세먼지 현황" , y= "미세먼지 10이하" ,color= "측정소" )
수치가 특정 시간대(오전 10시경~오후11시경)에 집중되어 있음 —> 일평균 값을 쓰면 안됨 지역별 양의 차이는 있으나 추세선은 같음, 매우 나쁨 검출량에 큰 차이가 존재함.
매우 나쁨에 세부 정도를 표기할 필요가 있음.
Code
ggplot (air_hour_April6,aes (time,pm2.5 )) + geom_rect (xmin= - Inf ,xmax= Inf ,ymin= 35 ,ymax= 75 , fill= 'grey' )+ geom_line (aes (color= place_name1))+ labs (x= "2018년 4월 6일 초미세먼지 현황" , y= "초미세먼지 2.5이하" ,color= "측정소" )
초미세먼지는 나쁨 수준 측정이 많음, 매우 나쁨은 적음, 지역별 추세는 유사 시간별 측정량 차이가 큼 –>1-3시간 이전 데이터 제공으로 추이 정보 필요