검색
검색
공개 노트 검색
회원가입로그인

[R 컴퓨팅_ 쉽게 설명하기] R 그래픽스 실습

요약
  • R 프로그래밍을 통한 다양한 데이터 시각화 기법 소개
  • Cars93 및 Arthritis 데이터셋을 활용한 실제 예제 설명
  • 산점도, 모자이크 플롯, 트리맵 등 다양한 시각화 방법에 대한 설명 및 구현

reasonofmoon_Nate_the_Great_a_young_detective_known_for_his_kee_4f6ed7ab-24cf-4ee0-b08e-b91d8c96fd4b

안녕하세요! R 프로그래밍을 통한 데이터 시각화에 대해 알아보겠습니다. 여러 가지 예제를 통해 R에서 제공하는 다양한 시각화 기법을 배워보고, 이를 응용하여 실제 데이터 분석에 활용할 수 있는 방법에 대해 알아보겠습니다.

1. 산점도와 회귀선 그리기 (Price vs MPG.city)

- 산점도는 두 변수 간의 관계를 파악하는데 유용합니다. 이 예제에서는 Cars93 데이터셋을 사용하여 자동차 가격과 도시 연비 간의 관계를 살펴봅니다.

- abline() 함수를 사용하여 선형 회귀선을 추가할 수 있으며, lines()와 lowess() 함수를 통해 비선형 관계를 파악할 수 있습니다.

- 산점도에 회귀선을 추가하면 두 변수 간의 전반적인 추세를 한 눈에 파악할 수 있습니다.

2. 모자이크 플롯 (Arthritis 데이터셋)

- 모자이크 플롯은 범주형 변수들 간의 관계를 시각화하는데 유용합니다. 이 예제에서는 Arthritis 데이터셋을 사용하여 Treatment와 Improved 변수 간의 관계를 살펴봅니다.

- xtabs() 함수를 사용하여 교차표를 생성하고, mosaic() 함수를 통해 모자이크 플롯을 그릴 수 있습니다.

- 모자이크 플롯은 각 범주의 비율을 면적으로 나타내므로, 변수들 간의 관계를 직관적으로 파악할 수 있습니다.

- gp 인자를 통해 다양한 색상과 음영 효과를 적용할 수 있습니다.

3. 쌍별 산점도 행렬 (Cars93 데이터셋)

- 쌍별 산점도 행렬은 여러 변수들 간의 관계를 한 번에 파악하는데 유용합니다. 이 예제에서는 Cars93 데이터셋의 일부 변수들을 선택하여 쌍별 산점도 행렬을 그려봅니다.

- pairs() 함수를 사용하여 쌍별 산점도 행렬을 그릴 수 있습니다.

- 쌍별 산점도 행렬을 통해 변수들 간의 상관관계와 분포를 한 눈에 파악할 수 있습니다.

4. 그룹별 산점도와 회귀선 (Cars93 데이터셋)

- 이 예제에서는 Cars93 데이터셋을 사용하여 구동 방식에 따른 가격과 도시 연비 간의 관계를 살펴봅니다.

- subset() 함수를 사용하여 구동 방식별로 데이터를 분할하고, points() 함수를 통해 각 그룹의 산점도를 그립니다.

- 그룹별로 회귀선을 추가하여 구동 방식에 따른 가격과 도시 연비의 관계를 비교할 수 있습니다.

- par(mfrow=c(2, 2)) 함수를 사용하여 여러 개의 산점도를 한 화면에 배열할 수 있습니다.

5. ggplot2 패키지를 활용한 산점도 (Cars93 데이터셋)

- ggplot2 패키지는 R에서 가장 널리 사용되는 시각화 패키지 중 하나입니다. 이 예제에서는 qplot() 함수를 사용하여 산점도를 그려봅니다.

- facet_grid() 함수를 사용하여 범주형 변수에 따라 산점도를 분할할 수 있습니다.

- ggplot2 패키지는 다양한 geom과 옵션을 제공하므로, 원하는 대로 산점도를 커스터마이즈할 수 있습니다.

6. treemap 패키지를 활용한 트리맵 (GNI2014, Cars93 데이터셋)

- 트리맵은 계층적 구조를 가진 데이터를 시각화하는데 유용합니다. 이 예제에서는 treemap 패키지를 사용하여 GNI2014와 Cars93 데이터셋의 트리맵을 그려봅니다.

- index 인자를 통해 계층 구조를 지정하고, vSize와 vColor 인자를 통해 각 영역의 크기와 색상을 결정할 수 있습니다.

- 트리맵은 데이터의 계층 구조와 각 계층의 비율을 한 눈에 파악할 수 있게 해줍니다.

7. gplots 패키지를 활용한 풍선 그림과 모자이크 플롯 (Cars93 데이터셋)

- 풍선 그림과 모자이크 플롯은 범주형 변수들 간의 관계를 시각화하는데 유용합니다. 이 예제에서는 gplots 패키지를 사용하여 Cars93 데이터셋의 풍선 그림과 모자이크 플롯을 그려봅니다.

- xtabs() 함수를 사용하여 교차표를 생성하고, balloonplot()과 mosaicplot() 함수를 통해 풍선 그림과 모자이크 플롯을 그릴 수 있습니다.

- 풍선 그림은 각 셀의 값을 풍선의 크기로 나타내므로, 변수들 간의 관계를 직관적으로 파악할 수 있습니다.

- 모자이크 플롯은 각 범주의 비율을 면적으로 나타내므로, 변수들 간의 관계를 한 눈에 파악할 수 있습니다.

이상으로 R을 활용한 다양한 시각화 기법에 대해 알아보았습니다. 각 예제에서 사용된 함수와 옵션을 응용하여 실제 데이터 분석에 활용해보시기 바랍니다. 데이터 시각화는 데이터의 특징과 패턴을 발견하는데 매우 중요한 역할을 하므로, 다양한 시각화 기법을 익히는 것이 좋습니다. 또한, 시각화 결과를 해석할 때는 변수의 특성과 데이터의 맥락을 고려해야 합니다. 이를 통해 데이터에 내재된 정보를 효과적으로 전달할 수 있습니다.

# MASS 라이브러리 로드
library(MASS)

# Cars93 데이터셋을 사용하여 가격(Price)과 도시 연비(MPG.city)의 산점도를 그립니다.
with(Cars93, plot(Price, MPG.city, main="Price vs MPG.city", xlab="Price", ylab="MPG in City", pch=19))

# 가격과 도시 연비의 선형 회귀선을 추가합니다.
with(Cars93, abline(lm(MPG.city ~ Price), col="red", lwd=2))

# 가격과 도시 연비의 Lowess 곡선을 추가합니다.
with(Cars93, lines(lowess(Price, MPG.city), col="blue", lwd=2))

# 범례 추가
legend(40, 40, lty=1, col=c("red", "blue"), c('regression', 'lowess'), lwd=2, bty='n')

[R 컴퓨팅_ 쉽게 설명하기] R 그래픽스 실습 image 2

# vcd 패키지 설치 및 로드
install.packages("vcd")
library(vcd)

# Arthritis 데이터셋 요약
summary(Arthritis)

# 교차표 생성 (여성 데이터만 선택)
art <- xtabs(~ Treatment + Improved, data=Arthritis, subset=Sex == "Female")
art

[R 컴퓨팅_ 쉽게 설명하기] R 그래픽스 실습 image 3

# 모자이크 플롯 생성

mosaic(art, gp=shading_max)

# 교차표 요약

summary(art)

# 대안 모자이크 플롯

mosaic(art, gp=shading_hcl, gp_args=list(interpolate=c(1, 1.8)))

[R 컴퓨팅_ 쉽게 설명하기] R 그래픽스 실습 image 4

# Titanic 데이터셋을 사용한 모자이크 플롯

mosaic(~ Sex + Age + Survived, data=Titanic, main="Survival on the Titanic", shade=TRUE, legend=TRUE)

[R 컴퓨팅_ 쉽게 설명하기] R 그래픽스 실습 image 5

# Cars93 데이터셋의 일부 변수 선택

dat1 <- subset(Cars93, select=c(Min.Price, Price, Max.Price, MPG.city, MPG.highway))

# 선택된 변수들의 쌍별 산점도 행렬

pairs(dat1)

[R 컴퓨팅_ 쉽게 설명하기] R 그래픽스 실습 image 6

# Cars93 데이터셋을 사용하여 가격과 도시 연비의 산점도

with(Cars93, plot(Price, MPG.city, xlab='Price', ylab='MPG in City', main='Mileage'))

[R 컴퓨팅_ 쉽게 설명하기] R 그래픽스 실습 image 7

# 구동 방식에 따른 가격과 도시 연비의 산점도

with(Cars93, plot(Price, MPG.city, xlab='Price', ylab='MPG in City', type='n')) with(subset(Cars93, DriveTrain=='Front'), points(Price, MPG.city, col='orange', pch=19)) with(subset(Cars93, DriveTrain=='Rear'), points(Price, MPG.city, col='firebrick', pch=17)) with(subset(Cars93, DriveTrain=='4WD'), points(Price, MPG.city, col='black', pch=8)) legend("topright", legend=c('Front', 'Rear', '4WD'), col=c('orange', 'firebrick', 'black'), pch=c(19, 17, 8), bty='n')

[R 컴퓨팅_ 쉽게 설명하기] R 그래픽스 실습 image 8

# 구동 방식에 따른 회귀선 추가

fit1 <- with(subset(Cars93, DriveTrain=='Front'), lm(MPG.city~Price)) fit2 <- with(subset(Cars93, DriveTrain=='Rear'), lm(MPG.city~Price)) fit3 <- with(subset(Cars93, DriveTrain=='4WD'), lm(MPG.city~Price))

[R 컴퓨팅_ 쉽게 설명하기] R 그래픽스 실습 image 9

# 회귀선의 x, y 좌표 계산

xx1 <- subset(Cars93, DriveTrain=='Front')$Price yy1 <- fit1$coef[1] + fit1$coef[2] * xx1 xx2 <- subset(Cars93, DriveTrain=='Rear')$Price yy2 <- fit2$coef[1] + fit2$coef[2] * xx2 xx3 <- subset(Cars93, DriveTrain=='4WD')$Price yy3 <- fit3$coef[1] + fit3$coef[2] * xx3

[R 컴퓨팅_ 쉽게 설명하기] R 그래픽스 실습 image 10

# 산점도에 회귀선 추가

with(Cars93, plot(Price, MPG.city, xlab='Price', ylab='MPG in City', type='n')) with(subset(Cars93, DriveTrain=='Front'), points(Price, MPG.city, col='orange', pch=19)) with(subset(Cars93, DriveTrain=='Rear'), points(Price, MPG.city, col='firebrick', pch=17)) with(subset(Cars93, DriveTrain=='4WD'), points(Price, MPG.city, col='black', pch=8)) legend("topright", legend=c('Front', 'Rear', '4WD'), col=c('orange', 'firebrick', 'black'), pch=c(19, 17, 8), bty='n') lines(xx1, yy1, col='orange', lwd=2) lines(xx2, yy2, col='firebrick', lwd=2) lines(xx3, yy3, col='black', lwd=2)

[R 컴퓨팅_ 쉽게 설명하기] R 그래픽스 실습 image 11

# 2x2 레이아웃으로 산점도 플롯

par(mfrow=c(2, 2)) with(subset(Cars93, DriveTrain=='Front'), plot(Price, MPG.city, col='orange', pch=19, main='Front')) with(subset(Cars93, DriveTrain=='Rear'), plot(Price, MPG.city, col='firebrick', pch=17, main='Rear')) with(subset(Cars93, DriveTrain=='4WD'), plot(Price, MPG.city, col='black', pch=8, main='4WD'))

[R 컴퓨팅_ 쉽게 설명하기] R 그래픽스 실습 image 12

# Set up a 2x2 layout for multiple plots
par(mfrow = c(2, 2))

# Create scatter plots for different DriveTrain categories in a 2x2 layout
with(subset(Cars93, DriveTrain == 'Front'), plot(Price, MPG.city, col = 'orange', pch = 19, main = 'Front'))
with(subset(Cars93, DriveTrain == 'Rear'), plot(Price, MPG.city, col = 'firebrick', pch = 17, main = 'Rear'))
with(subset(Cars93, DriveTrain == '4WD'), plot(Price, MPG.city, col = 'black', pch = 8, main = '4WD'))

[R 컴퓨팅_ 쉽게 설명하기] R 그래픽스 실습 image 13

[R 컴퓨팅_ 쉽게 설명하기] R 그래픽스 실습 image 14

# Install and load the ggplot2 package
install.packages("ggplot2")
library(ggplot2)

# Create a scatter plot using ggplot2
qplot(Wheelbase, Width, data = Cars93, shape = Type, color = Type, facets = Origin ~ AirBags, size = I(2), xlab = "Wheelbase", ylab = "Car Width")
# Install and load the treemap package
install.packages("treemap")
library(treemap)

# Example treemap using GNI2014 data
data(GNI2014) # Data from the treemap package
treemap(GNI2014, index = c("continent", "iso3"), vSize = "population", vColor = "GNI", type = "value")
treemap(Cars93, index = c("Manufacturer", "Make"), vSize = "Price", vColor = "AirBags", type = "categorical")

[R 컴퓨팅_ 쉽게 설명하기] R 그래픽스 실습 image 15

# Install and load the gplots package
install.packages("gplots")
library(gplots)

# Create a cross-tabulation of AirBags and Type and a balloon plot
dt <- with(Cars93, xtabs(~ AirBags + Type))
balloonplot(dt, main = "Airbags by Car type", xlab = "", ylab = "", label = FALSE, show.margins = FALSE)
balloonplot(dt, main = "Airbags by Car type", xlab = "", ylab = "", label = TRUE, show.margins = TRUE)
# Create a mosaic plot using the graphics package
library(graphics)
mosaicplot(dt, color = TRUE, las = 1, main = "Airbags by Car type")
mosaicplot(~ DriveTrain + AirBags + Origin, las = 1, main = "Drive Train by Airbags and Origin", ylab = 'Airbag type', xlab = 'Drive Train', data = Cars93, color = TRUE)

[R 컴퓨팅_ 쉽게 설명하기] R 그래픽스 실습 image 16

조회수 : 205
heart
공유하기
카카오로 공유하기
페이스북 공유하기
트위터로 공유하기
url 복사하기
T
페이지 기반 대답
AI Chat