프로그래밍/C 프로그래밍

R프로그래밍 그래프 종류(데이터 시각화)

에이티에스 2024. 10. 3. 22:21
728x90

데이터 시각화는 데이터를 그래픽으로 표현하는 데 사용되는 기술입니다. 산점도, 차트, 그래프, 히스토그램, 지도 등과 같은 요소를 사용하여 데이터를 더 이해하기 쉽게 만듭니다. 데이터 시각화를 사용하면 데이터에서 패턴, 추세 및 예외를 쉽게 인식할 수 있습니다. 이를 통해 정보와 결과를 빠르고 시각적으로 전달할 수 있습니다.


인간의 뇌는 정보가 그림 형태로 표현될 때 정보를 이해하고 유지하기가 더 쉽습니다. 따라서 데이터 시각화는 데이터를 빠르게 해석하고, 다양한 변수를 검사하여 패턴에 미치는 영향을 확인하고, 데이터에서 인사이트를 도출하는 데 도움이 됩니다.

 

R 프로그래밍은 데이터 분석을 수행하고, 데이터를 표현하고, 시각화를 빌드하기 위한 내장 함수 및 광범위한 패키지와 같은 포괄적인 도구 세트를 제공합니다.


R의 데이터 시각화는 다음과 같은 방법으로 수행할 수 있습니다.

  • 기본 그래픽
  • 그리드 그래픽
  • 래티스 그래픽스
  • ggplot2

 

1. 기본 R 그래픽

통계 그래픽에는 몇 가지 핵심 요소가 있습니다. 이러한 요소는 그래픽 문법의 기본입니다. R은 R의 데이터 시각화를 위해 그래픽 패키지에 포함된 몇 가지 내장 함수를 제공합니다. 그래픽에 대한 기본 지식을 얻기 위해 각 요소에 대해 하나씩 논의해 보겠습니다.

 

R에서 데이터 시각화를 위해 기본 mtcars 데이터 세트에 대해 알아보겠습니다. 

 

#To load graphics package
library("graphics")
#To load datasets package
library("datasets")
#To load mtcars dataset
data(mtcars)
#To analyze the structure of the dataset
str(mtcars)

 

출력:

'data.frame':  32 obs. of  11 variables:
$ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
$ cyl : num  6 6 4 6 8 6 8 4 4 6 ...
$ disp: num  160 160 108 258 360 ...
$ hp  : num  110 110 93 110 175 105 245 62 95 123 ...
$ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
$ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
$ qsec: num  16.5 17 18.6 19.4 17 ...
$ vs  : num  0 0 1 1 0 1 0 1 1 1 ...
$ am  : num  1 1 1 0 0 0 0 0 0 0 ...
$ gear: num  4 4 4 3 3 3 3 4 4 4 ...
$ carb: num  4 4 1 1 2 1 4 2 2 4 ...

 

 

반응형

 

1) plot() 함수

plot()함수는 R 객체를 플롯하는 데 사용됩니다.
plot() 함수의 기본 구문은 다음과 같습니다.

 

plot(x,y,type,main,sub,xlab,ylab,asp,col,..)

 

x : 플롯의 x 좌표, 단일 플로팅 구조, 함수 또는 R 객체
y: 플롯의 Y 좌표 점(x 좌표가 단일 구조인 경우 선택 사항)
type : 포인트의 경우 'p', 선의 경우 'l', 둘 다의 경우 'b', 고밀도 수직선의 경우 'h' 등
main: 플롯 메인타이틀
sub: 플롯 서브타이틀
xlab: x축명
ylab: y축명
asp : 종횡비(y/x)
col: 플롯의 색상(점, 선 등)

 

#To plot mpg(Miles per Gallon) vs Number of cars
plot(mtcars$mpg, xlab = "Number of cars", ylab = "Miles per Gallon", col = "red")

 

출력:

 

 

#To find relation between hp (Horse Power) and mpg (Miles per Gallon)
plot(mtcars$hp,mtcars$mpg, xlab = "HorsePower", ylab = "Miles per Gallon", type = "h", col = "blue")

 

출력:

 

 

 

반응형

 

2) 막대 플롯

수직 및 수평 방식으로 직사각형 막대 형태로 데이터를 나타내는 데 사용되며 막대의 길이는 변수 값에 비례합니다.

 

예를 들어:

#To draw a barplot of hp
#Horizontal
barplot(mtcars$hp,xlab = "HorsePower", col = "cyan", horiz = TRUE)
#Vertical
barplot(mtcars$hp, ylab = "HorsePower", col = "cyan", horiz = FALSE)

 

 

출력:

 

 

 

 

반응형

 

3) 히스토그램

변수의 주파수 범위에 대해 측정된 연속 범위 그룹으로 값을 나누는 데 사용됩니다.


예를 들어:

#To find histogram for mpg (Miles per Gallon)
hist(mtcars$mpg,xlab = "Miles Per Gallon", main = "Histogram for MPG", col = "yellow")

 

 

출력:

 

 

4) 박스 플롯

데이터 세트의 각 변수에 대한 설명 통계를 나타내는 데 사용됩니다. 변수의 최소값, 제1 사분위수, 중앙값, 제3 사분위수 및 최대값을 나타냅니다.

 

#To draw boxplots for disp (Displacement) and hp (Horse Power)
boxplot(mtcars[,3:4])

 

 

출력:

 

 

 

 

반응형

 

2. ggplot2 패키지를 사용한 R의 데이터 시각화

R의 ggplot2 패키지는 그래프를 설명하고 작성하기 위한 일련의 규칙인 그래픽 문법을 기반으로 합니다. 그래프를 스케일 및 레이어와 같은 의미론적 구성 요소로 분해하여 ggplot2는 그래픽의 문법을 구현합니다.


그래픽의 ggplot2 문법은 다음과 같이 구성됩니다.

  • 데이터
  • 레이어
  • 스케일
  • 좌표
  • 패싯
  • 테마

 

ggplot2는 데이터 시각화를 위한 R에서 가장 정교한 패키지 중 하나이며 최소한의 조정으로 가장 우아하고 다재다능한 인쇄 품질 플롯을 만드는 데 도움이 됩니다. ggplot2 패키지의 도움으로 단일 변수 및 다중 변수 그래프를 만드는 것은 매우 간단합니다.

 

ggplot을 빌드하기 위한 세 가지 기본 구성 요소는 다음과 같습니다.

  • Data : 그릴 데이터 세트
  • Aesthetics : 시각화에 데이터 매핑
  • Geometry/Layers  :  데이터에 사용되는 시각적 요소

 

ggplot의 기본 구문은 다음과 같습니다.

 

ggplot(data = NULL, mapping = aes()) + geom_function()

 

#To Install and load the ggplot2 package
install.packages(“ggplot2”)
library(ggplot2)

 

#To load datasets package
library("datasets")
#To load iris dataset
data(mtcars)
#To analyze the structure of the dataset
str(mtcars)

 

 

반응형

 

1) 스캐터 플롯

cyl(Number of Cylinders)와 vs(Engine Type(0 = V-shaped, 1 = straight))의 산점도를 그리려면 아래 코드를 실행합니다.

#Since the following columns have discrete(categorical) set of values, So we can
convert them to factors for optimal plotting
mtcars$am <- as.factor(mtcars$am)
mtcars$cyl <- as.factor(mtcars$cyl)
mtcars$vs <- as.factor(mtcars$vs)
mtcars$gear <- as.factor(mtcars$gear) 
#To draw scatter plot
ggplot(mtcars, aes(x= cyl , y= vs)) + geom_point()

 

 

출력:

이 플롯에는 오버플로팅이라고 하는 겹치는 값이 많기 때문에 이를 피하기 위해 geom_jitter() 함수를 사용하여 일정량의 노이즈를 추가합니다.

 

 

 

#Here width argument is used to set the amount of jitter
ggplot(mtcars, aes(x= cyl , y= vs)) + geom_jitter(width = 0.1)

 

 

출력:

여기에서 alpha 인수를 사용하여 점의 투명도를 설정하여 R에서 데이터 시각화에 대한 오버플로팅을 더욱 줄일 수도 있습니다.

 

 

 

 

#Transparency set to 50%
ggplot(mtcars, aes(x= cyl , y= vs)) + geom_jitter(width = 0.1, alpha = 0.5)

 

출력:

ggplot2를 사용하면 다변량 플롯을 효과적으로 플롯할 수 있습니다.


예를 들어,
am Transmission(0 = 자동, 1 = 수동)에 따라 cyl(Number of Cylinders) 및 vs(Engine Type(0 = V-shaped, 1 = straight))의 산점도를 그리려면 다음 코드를 실행합니다.

 

 

 

 

#We use the color aesthetic to introduce third variable with a legend on the right side
ggplot(mtcars, aes(x= cyl,y= vs,color = am)) + geom_jitter(width = 0.1, alpha = 0.5)

 

 

출력:

 

 

#To add the labels
ggplot(mtcars, aes(x= cyl , y= vs ,color = am)) + 
geom_jitter(width = 0.1, alpha = 0.5) + 
labs(x = "Cylinders",y = "Engine Type", color = "Transmission(0 = automatic, 1 = manual)")

 

 

출력:

 

#To plot with shape =1 and size = 4
ggplot(mtcars, aes(x = wt, y = mpg, col = cyl)) + 
geom_point(size = 4, shape = 1, alpha = 0.6) + 
labs(x = "Weight",y = "Miles per Gallon", color = "Cylinders")

 

 

출력:

 

 

반응형

 

2) 바 플롯

 

#To draw a bar plot of cyl(Number of Cylinders) according to the Transmission type
using <strong>geom_bar() and fill()</strong>
ggplot(mtcars, aes(x = cyl, fill = am)) + 
geom_bar() + 
labs(x = "Cylinders", y = "Car count", fill = "Transmission")

 

 

출력:

 

 

 

#To find the proprtion, we use position argument,as follows:
ggplot(mtcars, aes(x = cyl, fill = am)) + 
geom_bar(position = "fill") + 
labs(x = "Cylinders",y = "Proportion",fill = "Transmission")

 

 

출력:

 

 

 

테마

텍스트, 선, 배경 등과 같은 플롯의 비데이터 요소의 속성을 변경하는 데 사용됩니다. R에서 데이터 시각화를 위해 이러한 요소를 변경하기 위해 theme_function()를 사용합니다. 일반적으로 사용되는 테마 기능 중 일부는 다음과 같습니다.

  • theme_bw() :- 흰색 배경과 회색 그리드 선의 경우
  • theme_gray:- 회색 배경과 흰색 격자선의 경우
  • theme_linedraw:- 플롯 주변의 검은색 선
  • theme_light:- 밝은 회색 선과 축의 경우
  • theme_void:- 비표준 좌표가 있는 플롯 또는 도면에 유용한 빈 테마
  • theme_dark():- 색상을 돋보이게 하도록 디자인된 어두운 배경

 

예를 들어:

ggplot(mtcars, aes(x = cyl, fill = am)) + 
geom_bar(position = "fill") + 
theme_classic()+ 
labs(x = "Cylinders",y = "Proportion",fill = "Transmission")

 

 

출력:

 

 

 

3) 패싯

데이터를 추가로 드릴다운하고 하나 이상의 변수로 데이터를 분할한 다음 R에서 최적의 데이터 시각화를 위해 데이터의 하위 집합을 모두 플롯하는 데 사용됩니다. 예를 들면 다음과 같습니다.

#To facet the following plot according to gear(Number of Gears(3,4,5)), we use
facet_grid() function as follows:
ggplot(mtcars, aes(x = cyl, fill = am)) + 
geom_bar() + 
facet_grid(.~gear)+           
#facet_grid(rows ~ columns)  theme_bw() +  labs(title = "Cylinder count by transmission and Gears",x = "Cylinders",       y = "Count",fill = "Transmission")

 

 

출력:

 

 

 

반응형

 

4) 히스토그램

#To plot a histogram for mpg (Miles per Gallon),
according to cyl(Number of Cylinders), we use the geom_histogram() functiong
gplot(mtcars, aes(mpg,fill = cyl)) + 
geom_histogram(binwidth = 1)+ 
theme_bw()+ 
labs(title = "Miles per Gallon by Cylinders",x = "Miles per Gallon",y =       
"Count",fill = "Cylinders")

 

 

출력:

 

 

 

#To show overlapping, we set position to identity and alpha to 0.5
ggplot(mtcars, aes(mpg,fill = cyl)) + 
geom_histogram(binwidth = 1,position = "identity", alpha = 0.5)+ 
theme_bw()+ 
labs(title = "Miles per Gallon by Cylinders",x = "Miles per Gallon",y = "Count",fill = "Cylinders")

 

출력:

 

 

#To overcome overlapping, we can use the frequency polygon, as follows:
ggplot(mtcars, aes(mpg, color = cyl)) + geom_freqpoly(binwidth = 1)+ 
theme_bw()+ 
labs(title = "Miles per Gallon by Cylinders",x = "Miles per Gallon",y = "Count",fill = "Cylinders")

 

 

출력:

 

 

반응형

 

5) 박스 플롯

#To draw a Box plot 
ggplot(mtcars, aes(x = cyl,y = mpg)) + 
geom_boxplot(fill = "cyan", alpha = 0.5) + 
theme_bw() + 
labs(title = "Cylinder count vs Miles per Gallon",x = "Cylinders",      
y = "Miles per Gallon")

 

 

출력:

예를 들면 다음과 같습니다.

 

 

 

#To draw a Box plot 
ggplot(mtcars, aes(x = cyl,y = mpg,fill = am)) + 
geom_boxplot( alpha = 0.5) + 
theme_bw() + 
labs(title = "Cylinder vs MPG by Transmission",x = "Cylinders",      
y = "Miles per Gallon",fill = "Transmission")

 

출력:

 

 

3. R에서 데이터 시각화의 장/단점

데이터 시각화를 위한 다른 도구에 비해 R의 몇 가지 장점은 다음과 같습니다.

  • R은 사용법에 대한 광범위한 온라인 지침 외에도 광범위한 시각화 라이브러리 컬렉션을 제공합니다.
  • R은 또한 3D 모델 및 다중 패널 차트 형태의 데이터 시각화를 제공합니다.
  • R을 통해 축, 글꼴, 범례, 주석 및 레이블을 변경하여 데이터 시각화를 쉽게 사용자 지정할 수 있습니다.

 

또한 다음과 같이 데이터 시각화에서 R의 몇 가지 단점이 있습니다.

  • R은 개별 독립 실행형 서버에서 수행될 때만 데이터 시각화에 선호됩니다.
  • R을 사용한 데이터 시각화는 다른 시각화에 비해 많은 양의 데이터에 대해 느립니다.
728x90
반응형
그리드형

'프로그래밍 > C 프로그래밍' 카테고리의 다른 글

R프로그래밍 언어의 주요기능과 응용  (0) 2024.10.03
C#과 C++ 차이점  (0) 2024.09.28
HTML 색상코드 정보  (0) 2024.01.31
C언어의 정적함수  (0) 2023.07.01
C언어의 문자열  (0) 2023.07.01