R
[R] bar plot 문제(실제 데이터 사용)
ㄷㅐ장님
2022. 1. 25. 18:42
[문제163] 구별 진료과목별 병원현황을 그룹형 막대그래프로 시각화 해주세요.
data <- read.csv("c:/data/구별_의원현황.csv",header = T)
1) 전처리 - 표 만들기
#열이름 설정
names(data)<-data[1,]
names(data)[1] <- '구'
#필요없는 데이터 제외
data <- data[-1,c(-1,-3)]
#데이터 형식/행,열 변환
new <- data.frame(t(data))
#열이름 설정
names(new) <- new[1,]
#필요없는 데이터 제외
new <- new[-1,]
new <- new[,-1]
2) 전처리 - char → integer 변환하기(char : 그래프생성X)
new[,1:25] <- lapply(new[,1:25],as.integer)
3) 그래프 생성
barplot(as.matrix(new[1:9,1:11]),beside = T)
#1~11 구의 1~9 병원만 생성하기
[문제164] 구별 진료과목에 해당하는 막대형 그래프로 생성하시오. 단 막대높이 10개당 1개로 만드세요.
1) 여러개의 그래프 비교하기(par)
par(mfrow=c(2,5)) #2행 5열
gu <- names(new)
2-1) 강남구(혼자 단위가 다름)
barplot(new[1:9,1]*0.1,
axes = F, xlab="",
names.arg = rownames(new)[1:9],
cex.names = 0.8,
col=rainbow(9),
border='white',
main=paste(gu[1],'병원현황'),
las=2,ylim=c(0,50))
axis(2,ylim=seq(0,50,10))
abline(h=seq(0,50,5),lty=2)
2) 반복문 사용해서 그래프 생성
for(i in 2:10){
barplot(new[1:9,i]*0.1,
axes = F, xlab="",
names.arg = rownames(new)[1:9],
cex.names = 0.8,
col=rainbow(9),
border='white',
main=paste(gu[i],'병원현황'),
las=2,ylim=c(0,10))
axis(2,ylim=seq(0,50,10))
abline(h=seq(0,50,5),lty=2)
}
[문제165] 2015~2019년도별 1군 전염병 발생 현황에 대해 시각화 해주세요.
data <- read.csv("c:/data/감염병군별발생현황.csv",head=T)
1) 전처리
#1군 전염병 필터
data <- data[data$법정감염병군별.1.=="제1군",]
#필요없는 데이터 제거
data <- data[-1,-1]
#행이름 설정
rownames(data) <- data[,1]
#열이름 설정
names(data) <- c('전염병','2015년','2016년','2017년','2018년','2019년')
2) char → integer 변환하기
data[,2:6] <- lapply(data[,2:6],as.integer)
3) 그래프 생성하기
barplot(as.matrix(data[,-1]),beside = T)
3-1) 그래프 꾸미기(A형간염 제외)
bp <- barplot(as.matrix(data[data$전염병!='A형간염',-1]),
beside=T,col=rainbow(5),las=2,ylim=c(0,250))
legend("topleft",title="질병",legend=data$전염병[1:5],
cex=0.5,pch=15,col=rainbow(5),box.lty=0)