[R] ggplot

Go~ USA·2024년 4월 10일

R language

목록 보기
1/3

★ [학습목표]
R에서 ggplot을 이용한 데이터 가시화기법을 이해할 수 있다.

  • ggplot2는 우아하고 복잡한 데이터 시각화를 만들기 위한 강력한 R 패키지입니다. 이 패키지는 그래픽 문법을 기반으로 구축되어 사용자가 데이터, 미학적 매핑 및 기하학적 객체를 결합하여 플롯을 생성할 수 있습니다.

    library(ggplot2) 를 먼저 호출해야한다. 필요할 경우 install.packages("ggplot2") 를 설치해야한다.

1) 데이터: 시각화하려는 데이터셋을 지정합니다.

2) 미학적 매핑 (aes : Aesthetics): 데이터셋의 변수를 x와 y 위치, 색상, 모양 등과 같은 시각적 특성에 매핑합니다. 이는 ggplot() 내에서 aes() 함수 내에서 수행됩니다.

2) 기하학적 객체 (geoms): 데이터를 시각적으로 나타내기 위해 기하학적 객체(geoms)를 추가합니다. 점, 선, 막대 및 다각형과 같은 예가 있습니다.

3) 패싯(Facets): 하나 이상의 변수를 기준으로 데이터를 분할하여 여러 플롯을 생성할 수 있습니다.

4) 테마(Themes): 테마를 사용하여 플롯의 모양을 사용자 정의할 수 있습니다. 이를 통해 색상, 글꼴 및 기타 시각적 요소를 변경할 수 있습니다.

ggplot 사용방법

  • 시원이네 가족 7명은 A,B,C그룹으로 나뉘어 수학시험을 쳤고, 그 성적과 나이정보가 데이터로 입력되어 있다.
  • 이 Data를 기반으로 Group별 수합점수 분포를 Boxplot으로 도시하라.
  • 문법 : ggplot(데이터명)+geom_boxplot(aes(x=x축 컬럼명, y=y축 컬럼명))
# Create a sample dataset
data <- data.frame(
  ID = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15),
  Group = c("A", "A", "A", "A", "A", "B", "B", "B", "B", "B", "C", "C", "C", "C", "C"),
  Family = c(0,0,0,1,1,1,1,1,0,0,1,1,0,0,0),
  Name = c("Alice", "Bob", "Charlie", "David", "Eva", "Seik", "Siwon", "Soyoung"
           , "Key", "Tom", "Jiyu", "Sihoo", "Jey", "Brown", "Sam"),
  Age = c(25, 30, 35, 40, 69, 46, 10, 43, 34, 59, 9, 9, 19, 22, 72),
  Math = c(48, 80, 65, 86, 85, 90, 95, 99, 96, 55, 69, 89, 64, 65, 99)
)


# Review the updated dataset
print(data)
head(data)
str(data)

install.packages("ggplot2")   # ggplot 적용위해 최초설치 필요
library(ggplot2)              # ggplot2 library 호출
library(tidyverse)

ggplot(data) + geom_boxplot(aes(x=Group, y=Math))

  • 시원이네 가족의 점수와 그외 사람들의 점수를 Boxplot으로 표현하라.

    ※ 숫자로 구분된 범주형 데이터는 fator(순서가 포함된 데이터)로 type을 변경해 줘야지 가족 범주에 따른 분포도를 그릴 수 있다.

data$Family <- factor(data$Family)      #숫자로 표현된 범주형형 데이터를 Factor형으로 전환 
ggplot(data) + geom_boxplot(aes(x=Family, y=Math))

  • 나이(독립변수)에 따른 수학점수(종속변수)의 분포를 산점도로 표현하시오
ggplot(data) + aes(x = Age, y = Math) + 
  geom_point() +
  labs(x = "Age",
       y = "Math Score",
       title = " Score Board",
       caption = "source : Nature")

  • 추세선을 추가해보자
ggplot(data) + aes(x = Age, y = Math) + 
  geom_point() +
  geom_smooth()

  • 선형회귀선(Linear Model : lm)을 적용해보자
ggplot(data) + aes(x = Age, y = Math, color = Group) + 
  geom_point() +
  geom_smooth(method = "lm")

  • 선형회귀선(Linear Model : lm)을 표준오차(Standard Error)를 제거해보자
ggplot(data) + aes(x = Age, y = Math, color = Group) + 
  geom_point() +
  geom_smooth(method = "lm",
              se=FALSE)

  • A,B,C의 그룹별로 산점도를 달리 표현하고, 그룹별 선형회귀모델을 적용하여 도시하라.
ggplot(data) + aes(x = Age, y = Math, color = Group) + 
  geom_point() +
  geom_smooth(method = "lm",
              se=FALSE) 
  labs(x = "Age",
       y = "Math Score",
       title = " Score Board",
       caption = "source : Nature")

0개의 댓글