[R] R을 이용한 통계 분석 및 데이터 시각화 : 산포도

 정보

  • 업무명     : R을 이용한 통계 분석 및 데이터 시각화 : 산포도

  • 작성자     : 박진만

  • 작성일     : 2020-04-03

  • 설   명      :

  • 수정이력 :

 

 내용

[개요]

  • R은 통계 분석 및 시각화 등의 기능을 갖춘 프로그래밍 언어 내지 통계 분석 환경입니다. 

  • 통계 분석 기능으로 통계 검정, 선형 회귀 분석, 시계열 데이터 분석, 클러스터링 등을 지원하고 있습니다.

  • 또한 최신 논문에서 발표된 같은 새로운 기술도 R로 구현되는 경우가 많습니다.

  • 특히 시각화 기능으로 히스토그램, 막대 그래프, 선 그래프, 산포도, 나무 모양 그림이나 히트맵 등 기본적인 그래프가 기본으로 지원하고 있습니다.

  • 또한 ggplot2 등의 패키지를 사용하여 더 높은 수준의 그림을 가시화할 수 있습니다.

 

 

[특징]

  • 데이터를 이해하기 위해서 통계 분석 및 데이터 시각화가 요구되며 이 프로그램은 이러한 목적을 달성하기 위한 소프트웨어

     

[기능]

  • 데이터형 소개

 

[활용 자료]

  • 없음

 

[자료 처리 방안 및 활용 분석 기법]

  • 없음

 

[사용법]

  • 소스 코드 예시 참조

 

[사용 OS]

  • Windows 10

 

[사용 언어]

  • R v3.6.2

  • R Studio v1.2.5033

 

 소스 코드

[산포도] point 함수 이용한 분산형 차트 그리기

  • 분산형 차트는 데이터에 직접 plot을주고 points함수를 사용하여 그릴 수 있다. 

  • 다음 예제에서는 두 그룹의 데이터를 1 장의 이미지에 그리기 위해 먼저 plot함수에서 빈 이미지를 만들고 points함수를 두 번 사용하여 2 그룹의 데이터를 그려 추가하는 샘플 코드이다.

x1 <- rnorm(6000, 10, 2)
y1 <- rnorm(6000, 15, 4)
x2 <- rnorm(4000, 20, 3)
y2 <- rnorm(4000, 25, 4)

plot(0, 0, type = "n", xlim = c(0, max(x1, x2)), ylim = c(0, max(y1, y2)),xlab = "x", ylab = "y")

points(x1, y1, col = "darkgrey", pch = 1)
points(x2, y2, col = "orange", pch = 3)

legend("bottomright", legend = c("Group 1", "Group 2"), pch = c(1, 3), col = c("darkgrey", "orange"))

 

[산포도] 투명도 주기

  • points함수에서 산점도를 만들 때 마커의 투명도를 지정하는 것으로, 플롯된 포인트의 농담을 설정할 수 있다.

  • 예를 들어, 투명도 50% 일 때, 거기에 데이터가 하나만 플롯되어 있는 경우 반투명하게 보일 것이다.

  • 그러나 동일한 영역에 여러 값을 플로팅되어 있다면, 투명도 50 %의 마커가 여러 겹치는 때문에 그만큼 진해지게 된다.

  • 투명도와 색상은 RGB 형식으로 색상과 투명도를 동시에 지정할 수있다.

  • 예를 들어 "# FF0000"은 적색을 나타내지만, 그 뒤에 16 진수를 붙이게 되면 ( "# FF000020"), 색과 투명도 정보가 같이 들어가게 된다.

x1 <- rnorm(6000, 10, 2)
y1 <- rnorm(6000, 15, 4)
x2 <- rnorm(4000, 20, 3)
y2 <- rnorm(4000, 25, 4)

plot(0, 0, type = "n", xlim = c(0, max(x1, x2)), ylim = c(0, max(y1, y2)),xlab = "x", ylab = "y")

points(x1, y1, col = "#30303020", pch = 1)   # grey (#303030) + transparency 32% (20)
points(x2, y2, col = "#ff990020", pch = 3)   # orange (#ff9900) + transparency 32% (20)

legend("bottomright", legend = c("Group 1", "Group 2"), pch = c(1, 3), col = c("#303030", "#ff9900"))

  • densCols 함수에서 그라디언트 색상 팔레트를 생성하여 산점도를 그라데이션 컬러로 그릴 수도 있다.

x1 <- rnorm(6000, 10, 2)
y1 <- rnorm(6000, 15, 4)
x2 <- rnorm(4000, 20, 3)
y2 <- rnorm(4000, 25, 4)

col1 <- densCols(x1, y1, colramp = colorRampPalette(c("white", "darkgrey")))
col2 <- densCols(x2, y2, colramp = colorRampPalette(c("white", "orange", "red")))

plot(0, 0, type = "n", xlim = c(0, max(x1, x2)), ylim = c(0, max(y1, y2)),xlab = "x", ylab = "y")

points(x1, y1, col = col1, pch = 1)
points(x2, y2, col = col2, pch = 3)

legend("bottomright", legend = c("Group 1", "Group 2"), pch = c(1, 3), col = c("darkgrey", "orange"))

[산포도] 플롯 마커

  • 플롯 마커의 모양은 pch인수로 지정한다. 그리고 플롯 마커는 숫자로 지정한다.

  • 숫자와 플롯 마커의 모양은 다음과 같이 대응하고 있다.

par(mar = c(1, 1, 1, 1))
par(omr = c(1, 1, 1, 1))
plot(0, 0, type = "n", xlim = c(0, 11), ylim = c(0, 8), axes = F, xlab = "", ylab = "")

for (i in 1:10) points(i, 7, cex = 3, pch = i)
for (i in 1:10) text(i, 8, i)

for (i in 1:10) points(i, 4, cex = 3, pch = i+10)
for (i in 1:10) text(i, 5, i + 10)

for (i in 1:10) points(i, 1, cex = 3, pch = i+20)
for (i in 1:10) text(i, 2, i + 20)

 

  • 또한 플롯 마커는 숫자 대신 문자로 대체 할 수도 있다.

plot(c(0, 0), xlim = c(0, 5), ylim = c(0, 6), type = "n")
x <- c(1, 2, 3, 4, 5)
y1 <- c(2, 4, 4, 5, 6)
y2 <- c(5, 2, 2, 4, 1)
y3 <- c(1, 1, 3, 2, 1)

lines(x, y1, col = "red")
points(x, y1, pch = 1, cex = 2, col = "red")

lines(x, y2, col = "blue")
points(x, y2, pch = as.character(x), cex = 2, col = "blue")

lines(x, y3, col = "green")
points(x, y3, pch = c("a", "b", "c", "d", "e"), cex = 2, col = "green")

 

[다음글]

 

[R] R을 이용한 통계 분석 및 데이터 시각화 : 입체 산포도

정보 업무명 : R을 이용한 통계 분석 및 데이터 시각화 : 입체 산포도 작성자 : 박진만 작성일 : 2020-03-24 설 명 : 수정이력 : 내용 [개요] R은 통계 분석 및 시각화 등의 기능을 갖춘 프로그래밍 언어 내지 통..

shlee1990.tistory.com

 

[이전글]

 

[R] R을 이용한 통계 분석 및 데이터 시각화 : 2차 이상의 추세선

정보 업무명 : R을 이용한 통계 분석 및 데이터 시각화 : 2차 이상의 추세선 작성자 : 박진만 작성일 : 2020-04-03 설 명 : 수정이력 : 내용 [개요] R은 통계 분석 및 시각화 등의 기능을 갖춘 프로그래밍 언어 내..

shlee1990.tistory.com

 

 참고 문헌

[논문]

  • 없음

[보고서]

  • 없음

[URL]

  • 없음

 

 문의사항

[기상학/프로그래밍 언어]

  • sangho.lee.1990@gmail.com

[해양학/천문학/빅데이터]

  • saimang0804@gmail.com

 

 

 

 

 

 

 

 

 

 

 

 

 

 

본 블로그는 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음