일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 파이썬
- API
- geopnadas
- 시각화
- 막대그래프
- 마커클러스터
- 라이엇
- Python
- 인코등
- geopandas에러
- r
- 라이엇api
- map
- covid19
- 코로나
- matplotlib
- 공공데이터포털
- kepler
- pipwin
- 오픈API
- geopandas설치
- 오류
- 지도
- OSMnx
- riotapi
- kepler.gl
- QGIS라벨링
- covid
- 에러
- Folium
- Today
- Total
Nerdy
[R] 코로나 19 누적 데이터를 대상으로 막대 차트 만들기 본문
코로나 공식홈페이지에 누적 데이터(엑셀)를 다운 받을 수 있다. 이 데이터를 가지고 R에서 분류를 한 후 막대 차트를 만들어보도록 하자
데이터는 첫 확진 날부터 시작해서 현재 날짜까지 누적된 엑셀화 데이터이며 연도별, 월별이 아닌 일별로 나눠져 있어 최근 날짜인 2022년 6월 데이터만 대상으로 코드 작성을 한다.
엑셀 파일을 다운 받으면 '발생별(국내 + 해외유입), 사망' 시트부터 시작해 총 5개 시트가 구성 되어 있으며 해당 엑셀 파일을 가지고 csv 파일 변환을 한 후 R에서 파일을 읽을 예정이다.
(해당 파일은 '발생별(국내 + 해외유입), 사망' 시트를 csv로 변환한 파일이며 원본 엑셀 파일에 2번째 행은 삭제 했다.)
R에서 사용할 'COVID-19.csv' 파일을 read.csv() 함수를 사용해 df 객체에 담고 잘 담겨져 있는지 확인한다.
df <- read.csv('COVID-19.csv', header = T)
head(df)
X 일자 계.명. 국내발생.명. 해외유입.명. 사망.명.
1 2 2020-01-20 1 0 1 0
2 3 2020-01-21 0 0 0 0
3 4 2020-01-22 0 0 0 0
4 5 2020-01-23 0 0 0 0
5 6 2020-01-24 1 0 1 0
6 7 2020-01-25 0 0 0 0
df 컬럼 중 이따가 그릴 bar plot에서 사용할 x축인 '일자' 컬럼 데이터는 날짜를 의미하는 문자형 데이터가 담겨져 있다.
날짜라는 것을 인식해주기 위해 as.Date를 사용해준다.
df$일자 <- as.Date(df$일자)
# 엑셀 파일을 csv 파일을 변환하면서 담겨져 있는 컬럼별 데이터들이 전부 문자형 데이터들이였고 특수문자(, -)가 담겨져 있어 gsub으로 제거 및 대체를 해준 후 숫자형으로 변환을 해줬습니다. 아래 코드는 사용했던 코드를 적은거니 참고하시길 바랍니다.
# 특수기호 0으로 대체 및 제거 및 숫자형 변환
# df2는 엑셀을 csv로 변환한 파일을 담은 객체
df2$계.명. <- gsub(',', '', df2$계.명.)
df2$계.명. <- as.numeric(df2$계.명.)
df2$국내발생.명. <- gsub('-', 0, df2$국내발생.명.)
df2$국내발생.명. <- gsub(',', '', df2$국내발생.명.)
df2$국내발생.명. <- as.numeric(df2$국내발생.명.)
df2$해외유입.명. <- gsub('-', 0, df2$해외유입.명.)
df2$해외유입.명. <- as.numeric(df2$해외유입.명.)
df2$사망.명. <- gsub('-', 0, df2$사망.명.)
df2$사망.명. <- as.numeric(df2$사망.명.)
View(df2)
일자별로 구성된 데이터들을 조금 더 편하게 관리할 수 있도록 연도별, 그리고 좀있다 사용할 2022년 6월 날짜만 걷어낸다.(해당 파일은 위에 올렸음)
# 연도별로 걷어내기
y_2020 <- subset(df, 일자 <= "2020-12-31")
y_2021 <- subset(df, 일자 >= "2021-01-01" & 일자 <= "2021-12-31")
y_2022 <- subset(df, 일자 >= "2022-01-01" & 일자 <= "2022-06-22")
# 2022년 6월만
y_2022_6 <- subset(y_2022, 일자 >= "2022-06-01")
분류를 다 했으면 막대 차트를 그릴건데 총 4가지를 그려볼려고 한다. 그래프에 적용할 색상은 미리 만들어서 객체에 담았다.
plot_col1 <- rgb(1, 0, 0, seq(1, 0, length = 20))
plot_col2 <- rgb(1, 0, 0, seq(0, 1, length = 20))
1. 6월 COVID-19 국내외 확진자 및 사망자 수
barplot(y_2022_6$계.명., names = y_2022_6$일자,
main = '6월 COVID-19 국내외 확진자 및 사망자 수',
xlab = '일자', ylab = '확진 및 사망 수(명)', col = plot_col1,
cex.main = 2.5, col.main = "red",
cex.lab = 1.5, col.lab = 'red')
2. 6월 COVID-19 국내 확진자 수'
barplot(y_2022_6$국내발생.명., names = y_2022_6$일자,
main = '6월 COVID-19 국내 확진자 수',
xlab = '일자', ylab = '국내발생(명)', col = plot_col1,
cex.main = 2.5, col.main = "red",
cex.lab = 1.5, col.lab = 'red')
3. 6월 COVID-19 해외 유입 확진자 수
barplot(y_2022_6$해외유입.명., names = y_2022_6$일자,
main = '6월 COVID-19 해외 유입 확진자 수',
xlab = '일자', ylab = '해외유입(명)',
ylim = c(0, 100), col = plot_col2,
cex.main = 2.5, col.main = "red",
cex.lab = 1.5, col.lab = 'red')
4. 6월 COVID-19 사망자 수
barplot(y_2022_6$사망.명., names = y_2022_6$일자,
main = '6월 COVID-19 사망자 수',
xlab = '일자', ylab = '사망자(명)',
ylim = c(0, 25), col = plot_col1,
cex.main = 2.5, col.main = "red",
cex.lab = 1.5, col.lab = 'red')
■ 전체 코드
par(mfrow = c(2,2))
barplot(y_2022_6$계.명., names = y_2022_6$일자,
main = '6월 COVID-19 국내외 확진자 및 사망자 수',
xlab = '일자', ylab = '확진 및 사망 수(명)', col = plot_col1,
cex.main = 2.5, col.main = "red",
cex.lab = 1.5, col.lab = 'red')
barplot(y_2022_6$국내발생.명., names = y_2022_6$일자,
main = '6월 COVID-19 국내 확진자 수',
xlab = '일자', ylab = '국내발생(명)', col = plot_col1,
cex.main = 2.5, col.main = "red",
cex.lab = 1.5, col.lab = 'red')
barplot(y_2022_6$해외유입.명., names = y_2022_6$일자,
main = '6월 COVID-19 해외 유입 확진자 수',
xlab = '일자', ylab = '해외유입(명)',
ylim = c(0, 100), col = plot_col2,
cex.main = 2.5, col.main = "red",
cex.lab = 1.5, col.lab = 'red')
barplot(y_2022_6$사망.명., names = y_2022_6$일자,
main = '6월 COVID-19 사망자 수',
xlab = '일자', ylab = '사망자(명)',
ylim = c(0, 25), col = plot_col1,
cex.main = 2.5, col.main = "red",
cex.lab = 1.5, col.lab = 'red')
■ 결과
# mfrow 함수를 사용해 총 4개 그림을 2행 2열 방식으로 넣었음
'R' 카테고리의 다른 글
R Markdown 사용 방법과 Markdown에 파이썬 코드 넣기 (0) | 2022.07.01 |
---|---|
[R] 오픈 API를 활용한 코로나 19 사망자 수 그래프 그리기 (0) | 2022.06.23 |
[R] 메모리 부족 시 늘리는 방법 (0) | 2022.06.22 |
[R] Why data.table? (0) | 2022.06.22 |
KOSPI 지수 데이터를 활용한 시계열 분석 (0) | 2022.06.15 |