본문 바로가기

데이터분석/R

[R 프로그래밍] ggplot2 패키지의 함수로 그래프 그리기 (ggplot2)

#그래프 만들기

# data : 사용할 데이터

# aes : 축 설정. x축, y축에 어떤 데이터를 사용할 지 설정할 수 있다.


#아래 내용은 dataSample 테이블을 사용하고 x 축은 class컬럼의 값, y축은 math컬럼의 값을 사용하겠다는 의미

ggplot(data = dataSample, aes(x=class, y=math))


#이렇게 해서 실행하면, 축만 세팅되고 아직 그래프가 표시되지 않는다.

#어떤 그래프를 쓸 것인지 설정하지 않았기 때문


#그래프 종류

 geom_point() 

 산점도

 geom_col()

 막대그래프

 X축, Y축을 모두 설정 

 geom_bar()

 막대그래프

 X축만 설정, Y축은 해당 데이터의 수량

 geom_line()

 선 그래프

 geom_boxplot() 

 박스 그래프 


#dataSample로 그래프 만들기


ggplot(data = dataSample, aes(x=class, y=math)) + geom_point()


data : dataSample의 데이터를 사용함

aes : 어떤 값을 축으로 쓸 것인지 설정

geom_point() 산점도 형태로 그래프 표현




#축 제한하기

ggplot(data = dataSample, aes(x=class, y=math)) + 

  geom_point() +

  xlim(1,2)+

  ylim(50,90)


 X축은 1~2까지만 사용하고, Y축은 50~90까지만 사용


이 경우 아래와 같은 경고가 뜨는데 이건 축 제한으로 인해 아래 값들이 표현되지 않았다는 의미

Warning message:

Removed 15 rows containing missing values (geom_point). 



#geom_col() 막대 그래프의 경우, 위의 데이터를 그대로 사용하면 각 class의 총 합을 표시하기 때문에, 평균을 보려면 평균을 구한 후 사용해야 제대로 표현 가능

ggplot(data = dataSample, aes(x=class, y=math)) + geom_col()


#reorder로 정렬 가능

ggplot(data = dataSample2, aes(x=reorder(class, mean_math), y=mean_math)) + geom_col()


reorder 함수를 사용해서 어떤 기준으로 정렬할 지 설정 가능

기본은 오름차순 정렬이며, 정렬할 값에 -를 붙이면 내림차순

 "-mean_math" 라면 내림차순 정렬 





#아래와 같이 각 반의 수학 점수 평균을 구한 후 평균에 대한 그래프를 표현하자.

dataSample2 <- dataSample %>%

  group_by(class) %>%

  summarise(mean_math = mean(math))


 ggplot(data = dataSample2, aes(x=class, y=mean_math)) + geom_col()




#geom_bar를 사용해 빈도 막대 그래프 그리기

ggplot(data = dataSample, aes(x=math)) + geom_bar()


특정 값의 빈도 분포를 볼 수 있다.

geom_bar()는 X축 값만 설정하고, Y축은 설정하지 않는다. (Y 값은 빈도 수로 자동 설정) 



#geom_line() 을 사용해 선그래프 그리기

ggplot(data = dataSample2, aes(x=class, y=mean_math)) + geom_line()


꺾은 선 형태로 표현해준다. 



#boxplot()를 사용한 박스 그래프 표현

ggplot(data = sample180923, aes (x = class, y = data)) + geom_boxplot()

sample180923은 A~E클래스 별로 값이 있는 데이터

x축에 설정한 클래스 단위로 박스 그래프를 표시해준다.