1. 단순한 차트의 종류 < 차트 > 데이터의 분포 파악 데이터 분석 결과의 효과적인 전달 graphics 패키지 파이 차트 바 차트 그룹화된 바차트 산포도 / X-Y플로팅 히스토그램 박스플롯 < 차트 > 데이터의 분포 파악 데이터 분석 결과의 효과적인 전달 graphics 패키지 - 간단 차트 출력 plotrix 패키지 - 3D 차트 출력
2. 파이 차트
기본 파이 차트 기준선 변경, 색과 라벨 수정, 3D 파이 차트는 pp.120~122참조
파이 차트 (기준선 변경) # 파이 차트로 영업 실적 비교하기 x <- c(9, 15, 20, 6) label <- c("영업 1팀", "영업 2팀", "영업 3팀", "영업 4팀") pie(x, labels=label, main="부서별 영업 실적") pie(x, init.angle = 90, labels=label, main="부서별 영업 실적")
파이 차트 (%표시) # 파이 차트로 영업 실적 비교하기 x <- c(9, 15, 20, 6) label <- c("영업 1팀", "영업 2팀", "영업 3팀", "영업 4팀") #부서명과 비율을 함께 나타내기 위해 label 수정 pct <- round(x / sum(x) * 100) label <- paste(label, pct) label <- paste(label, “%”, sep=“”) 반올림 함수 : round( 수, 자릿수 ) 예> round( 7.4567, 2) → 7.46 pie(x, init.angle = 90, col = rainbow(length(x)), labels=label, main="부서별 영업 실적")
파이 차트 컬러 1/4 pie(rep(1, 12)) pie(rep(1, 24), col = rainbow(24)) pie(rep(1, 24), col = heat.colors(24))
파이 차트 컬러 2/4 pie(rep(1, 24), col = terrain.colors(24)) pie(rep(1, 24), col = topo.colors(24)) pie(rep(1, 24), col = cm.colors(24))
파이 차트 컬러 3/4 pie.sales <- c(0.12, 0.3, 0.26, 0.16, 0.04, 0.12) names(pie.sales) <- c("Blueberry", "Cherry", "Apple", "Boston Cream", "Other", "Vanilla Cream") pie(pie.sales) pie(pie.sales, col = c("purple", "violetred1", "green3", "cornsilk", "cyan", "white"))
파이 차트 컬러 4/4 ## (original by FinalBackwardsGlance ## on http://imgur.com/gallery/wWrpU4X) pie(c(Sky = 78, "Sunny side of pyramid" = 17, "Shady side of pyramid" = 5), init.angle = 315, col = c("deepskyblue", "yellow", "yellow3"), border = FALSE)
3차원 파이 차트 # 파이 차트로 영업 실적 비교하기 x <- c(9, 15, 20, 6) pct <- round(x / sum(x) * 100) label <- c("영업 1팀", "영업 2팀", "영업 3팀", "영업 4팀") label <- paste(label, pct) label <- paste(label, “%”, sep=“”) install.packages("plotrix") #3차원 pie3D 함수사용 library(plotrix) pie3D(x, labels=label, explode=0.1, labelcex=0.8, main="부서별 영업 실적") 부채꼴 간격 라벨문자크기 * 0.8
3. 바 차트
기본 바 차트 막대의 색 지정, x, y축 크기, 데이터 라벨 출력, 수평 회전은 pp.125-128 참조
바 차트 컬러 height <- c(9, 15, 20, 6) name <- c("영업 1팀", "영업 2팀", "영업 3팀", "영업 4팀") barplot(height, names.arg=name, main="부서별 영업 실적") barplot(height, names.arg=name, main="부서별 영업 실적“, col=rainbow(length(height)))
바 차트 라벨 barplot(height, names.arg=name, main="부서별 영업 실적“, xlab="부서", ylab="영업 실적(억 원)") barplot(height, names.arg=name, main="부서별 영업 실적", col=rainbow(length(height)), xlab="부서", ylab="영업 실적(억 원)", ylim=c(0, 25))
바 차트 데이터 라벨 위치 bp <- barplot(height, names.arg=name, main="부서별 영업 실적“, xlab="부서", ylab="영업 실적(억 원)") text(x=bp, y=height, labels=round(height,0), pos=3) text(x=bp, y=height, labels=round(height,0), pos=1) pos=1 아래쪽 pos=2 왼쪽 pos=3 위쪽 pos=4 오른쪽
<참고> 그래프에 문자를 추가 함수 text() 함수 : 그래프 내에 문자 추가 mtext() 함수 : mtext()는 외부 마진 영역(1 하단, 2 좌측, 3 상단, 4 우측)에 문자를 추가 문자를 추가할 위치의 x, y좌표, 추가할 문자, 문자의 상대적인 위치 추가할 문자, 문자를 추가할 위치, 문자와 그래프와의 마진 거리, 정렬(0:왼쪽/아래 1:위/오른쪽, 생략:가운데), 외부에 마진추가(TRUE)/ 내부에 마진추가(FALSE)
바 차트 회전하기 barplot(height, names.arg=name, main="부서별 영업 실적", col=rainbow(length(height)), xlab="영업 실적(억 원)", ylab="부서", horiz=TRUE, width=50) # 50 pixel width
4. 스택형/그룹형 바 차트 pp.129-131 참조
스택형 바 차트 그룹별 값 할당 # 스택형 바 차트(Stacked Bar Chart) 그룹별 데이터의 배열 만들기 그룹 이름 할당 범례 만들기 차트출력 # 스택형 바 차트(Stacked Bar Chart) height1 <- c(4, 18, 5, 8) height2 <- c(9, 15, 20, 6) height <- rbind(height1, height2) name <- c("영업 1팀", "영업 2팀", "영업 3팀", "영업 4팀") legend_lbl <- c("2014년", "2015년") barplot(height, main="부서별 영업 실적", names.arg=name, xlab="부서", ylab="영업 실적(억 원)", col=c("darkblue","red"), legend.text=legend_lbl, ylim=c(0, 35)) 그룹별 색 지정 그룹별 범례 라벨
그룹형 바 차트 # 그룹형 바 차트(Grouped Bar Chart) barplot(height, main="부서별 영업 실적", names.arg=name, xlab="부서", ylab="영업 실적(억 원)", col=c("darkblue","red"), legend.text=legend_lbl, ylim=c(0, 30), beside=TRUE, #막대 옆으로 배치 args.legend=list(x='top')) #범례 위중앙에 배치
5. 일반적인 X-Y 플로팅 pp.132-137 참조
R 내장 women 데이터 세트 data(women) # obsolete convention women # just use women height weight 1 58 115 2 59 117 3 60 120 4 61 123 5 62 126 . . . 12 69 150 13 70 154 14 71 159 15 72 164
일반적인 X-Y 플로팅 weight <- women$weight plot(weight) height <- women$height plot(height, weight, xlab="키", ylab="몸무게")
plot()의 type 1/4 plot(height, weight, xlab="키", ylab="몸무게", type="p") plot(height, weight, xlab="키", ylab="몸무게", type="l")
plot()의 type 2/4 plot(height, weight, xlab="키", ylab="몸무게", type="p") plot(height, weight, xlab="키", ylab="몸무게", type="l") plot(height, weight, xlab="키", ylab="몸무게", type="b") plot(height, weight, xlab="키", ylab="몸무게", type="c") plot(height, weight, xlab="키", ylab="몸무게", type="o") plot(height, weight, xlab="키", ylab="몸무게", type="h") plot(height, weight, xlab="키", ylab="몸무게", type="s") plot(height, weight, xlab="키", ylab="몸무게", type="S") plot(height, weight, xlab="키", ylab="몸무게", type="n") "p" for points "l" for lines "b" for both "c" for the lines part alone of "b" "o" for both 'overplotted' "h" for 'histogram' like vertical lines "s" for stair steps "S" for other steps "n" for no plotting
plot() 'type' Example 3/4 x <- c(1:5) y <- c(1:5) par(pch=22, col="red") par(mfrow=c(2,4)) opts = c("p", "l", "b", "c", "o", "s", "S", "h") for( i in 1:length(opts) ) { heading = paste("type =", opts[i]) plot(x, y, type="n", main=heading) lines(x, y, type=opts[i]) }
plot()의 type 3/3
X-Y 플로팅 문자의 변경 weight <- women$weight height <- women$height plot(height, weight, xlab="키", ylab="몸무게", pch=23, col="blue", bg="yellow", cex=1.5)
PCH: 플로팅 문자의 심볼 P137 표 참조
6. 히스토그램
기본 히스토그램
계급구간과 색, 확률밀도, 상대도수로 출력하기, 계급의 수는 pp.141-144 참조 계속 계급구간과 색, 확률밀도, 상대도수로 출력하기, 계급의 수는 pp.141-144 참조
히스토그램 컬러 colors <- c("red", "orange", "yellow", "green", "blue", "navy", "violet") hist(mag, main="지진 발생 강도의 분포", xlab="지진 강도", ylab="발생 건수", col=colors, breaks=seq(4, 6.5, by=0.5))
히스토그램 빈도수 hist(mag, main="지진 발생 강도의 분포", xlab="지진 강도", ylab="상대도수", col=colors, breaks=seq(4, 6.5, by=0.5), freq=FALSE)
FD / Freedman-Diaconis 히스토그램의 계급 수 N개의 데이터가 있을 때, 계급의 수는 얼마가 적당한가? 공식의 명칭 공식 엑셀 등에서 사용하는 공식 sqrt(n) Sturges (R's default) ceiling(1 + 3.3 * log(n)) Scott FD / Freedman-Diaconis Rice ceiling(2 * n^(1/3))
히스토그램 breaks hist(mag, main="지진 발생 강도의 분포", xlab="지진 강도", ylab="상대도수", col=colors, breaks="Sturges", freq=FALSE)
7. 박스 플롯
박스 플롯 (Box Plot) 박스 플롯 관련 통계 데이터 살펴보기 mag <- quakes$mag head(mag) min(mag) max(mag) median(mag) quantile(mag, c(0.25, 0.5, 0.75)) [1] 4.8 4.2 5.4 4.1 4.0 4.0 [1] 4 [1] 6.4 [1] 4.6 25% 50% 75% 4.3 4.6 4.9
계속