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)
}

par(mfrow=c(2,5)) #2행 5열


[문제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)