본문 바로가기

R

[R] 시각화 - 막대그래프(barplot)

막대그래프(barplot)

: 빈도표(도수분포표)를 활용하여 각 수준(도수)의 값(크기)을 높이(막대)로 표현하는 그래프

 

sales <- c(150,100,70,30)
team <- c("영업1팀","영업2팀","영업3팀","영업4팀")

세로막대 그래프

barplot(height=sales, #세로축 값
        names.arg = team, #가로축 값
        col=rainbow(length(sales)),
        main = "영업팀별 영업 실적",
        xlab="영업팀",#가로축 이름
        ylab="영업실적(억억원)",#세로축 이름
        ylim=c(0,200),#세로축 범위
        cex.names=0.9, #이름폰트 크기
        horiz=FALSE) #FALSE:세로막대

가로막대 그래프

barplot(height=sales, #세로축 값
        names.arg = team, #가로축 값
        col=rainbow(length(sales)),
        main = "영업팀별 영업 실적",
        xlab="영업팀",#가로축 이름
        ylab="영업실적(억억원)",#세로축 이름
        ylim=c(0,200),#세로축 범위
        cex.names=0.9, #이름폰트 크기
        horiz=TRUE) #TRUE:가로막대


[문제154] 부서별 인원수를 막대그래프로 시각화 해주세요.

t <- table(employees$DEPARTMENT_ID)
barplot(t)



[문제155] 부서이름별 총액급여에 대해 막대그래프를 생성하세요. 단, 부서가 없는 사원들의 총액급여도 포함해주세요.

1) 부서이름별 총액급여

dept_sal <- employees%>%
              group_by(DEPARTMENT_ID)%>%
              dplyr::summarise(sum_sal=sum(SALARY))


2) 부서가 없는 사원들의 총액급여도 포함하기 left join

result <- dept_sal%>%
            dplyr::left_join(departments)%>%
            select(DEPARTMENT_NAME,sum_sal)

result[is.na(result$DEPARTMENT_NAME),1] <- '부서(X)'


3) 막대그래프 만들기

bp <- barplot(height = result$sum_sal,
              names.arg = result$DEPARTMENT_NAME,
              col = rainbow(nrow(result)),
              main = "부서이름별 총액",
              xlab="부서이름",
              ylab="총급여",
              ylim=c(0,350000),
              las=2,
              cex.names=0.5,
              cex.axis=0.5)

las=0 : 기본값. 축 방향
las=1 : 수평 방향( 축 방향과 상관 없음)
las=2 : 축을 기준으로 수직 방향
las=3 : 수직 방향(축의 방향과 상관없음)

 

4) 막대그래프에 값 표시하기

text(x=bp,
     y=result$sum_sal,
     labels=result$sum_sal,cex=0.5,pos=3)

 

pos=1 : 막대끝선의 아래쪽
pos=2 : 막대끝선의 왼쪽
pos=3 : 막대끝선의 위쪽
pos=4 : 막대끝선의 오른쪽

+)막대그래프에 최댓값, 최솟값만 값 표시하기

bp[result$sum_sal == max(result$sum_sal)]
#최댓값
text(x=bp[result$sum_sal == max(result$sum_sal)],
     y=max(result$sum_sal),
     labels=max(result$sum_sal),
     cex=0.5,
     pos=3,
     col="red")
#최솟값
text(x=bp[result$sum_sal == min(result$sum_sal)],
     y=min(result$sum_sal),
     labels=min(result$sum_sal),
     cex=0.5,
     pos=3,
     col="red")

 

'R' 카테고리의 다른 글

[R] bar plot 문제(실제 데이터 사용)  (0) 2022.01.25
[R] 시각화 - stacked/group bar plot  (0) 2022.01.25
[R] 빈도표  (0) 2022.01.25
[R] 시각화 - 원그래프(pie)  (0) 2022.01.25
[R] sqldf  (0) 2022.01.20
Recent Posts
Popular Posts
Recent Comments