본문 바로가기
Data Science

geom_point 함수, 연속형 변수 시각화

by Jacey312 2023. 12. 29.

geom_point() 개요

geom_point() 함수는 R 프로그래밍 언어의 ggplot2 패키지에서 사용되는 함수로, 산점도(Scatter plot)를 생성하는 데에 활용됩니다. 이 함수는 ggplot2 패키지의 일부이며, 데이터 시각화 작업을 위해 사용되는 강력한 도구 중 하나입니다.

geom_point() 함수는 ggplot2의 그래프를 구성하는 레이어 중 하나로, 데이터셋의 각 관측치를 산점도의 점으로 나타냅니다. 각 점은 데이터에서 한 개의 관측치를 나타내며, x축과 y축 값에 따라 해당 위치에 표시됩니다. 이를 통해 변수 간의 관계나 분포를 시각적으로 파악할 수 있습니다. 예를 들어, 다음은 geom_point() 함수를 사용하여 두 변수 x와 y 간의 관계를 나타내는 간단한 산점도를 생성하는 코드입니다.

 

geom_point() 함수는 주로 연속형 변수를 가진 데이터의 시각화에 사용되며, 산점도는 두 연속형 변수 간의 관계를 보여주기 위한 효과적인 도구로 사용됩니다.

 

data라는 데이터셋 중 X(범주형 변수), Y(연속형 변수)라는 컬럼이 있는 경우를 예로 들어 보겠습니다. 아래 코드에서는  각 데이터값의 범주형 변수 X와 연속형 변수 Y 간의 관계를 나타내는 위치에 point가 위치하도록 배치되어 나타납니다.

 

ggplot(data, aes(X, Y))+geom_point()

<그림 1> Rstudio를 이용한 geom_point() 사용 예시

 

 

범주별 산점도 그리기 - facet_wrap()

범주형 변수 X와 연속형 변수 Y의 관계를 산점도로 나타내고자 할 때, 데이터의 종류가 너무 다양하거나 겹치는 데이터가 많을 경우 X와 Y의 관계를 하나의 그래프로 그리면 구체적인 데이터 구조를 파악하기 어려울 수 있습니다. 상기 예시에서 보이는 <그림 1>도 각 point가 하나인 것으로 보이지만 사실상 여러 개의 점들이 겹쳐진 것일 수 있고, 실제 이 데이터에서는 대부분의 point가 여러 개의 점들이 겹쳐진 것입니다.

 

이렇게 겹쳐진 점들이 많을 경우 별도의 범주형 변수 Z를 기준으로 각각의 산점도 그래프를 그려보는 것이 데이터 시각화에 효과적인 경우가 많습니다. 이를 위해 geom_point() 함수와 함께 사용하는 함수가 facet_wrap() 함수입니다. facet_wrap() 함수는 geom_point() 함수 뿐만 아니라 geom_histogram(), geom_frepoly(), geom_jitter() 등의 여러 ggplot2 함수에 적용될 수 있고, 함수 뒷부분에 "+facet_wrap()" 이라는 코드를 통해 적용됩니다. 

 

아래에서는 상기 geom_point() 예시에 대해 facet_wrap()을 적용하는 코드를 작성했습니다. 각 데이터값의 범주형 변수 X와 연속형 변수 Y 간의 관계를 나타내는 위치에 point가 위치하되, "class"라는 새로운 범주형 변수 마다 그래프를 그리도록 facet_wrap(~class) 함수를 적용하였습니다. 

 

 

ggplot(data, aes(X, Y, colour = class))+geom_point()+facet_wrap(~class)

Rstudio를 이용한 facet_wrap() 사용 예시

 

 

 

 

point 겹친 정도 확인하기 - alpha

앞서 말했듯이, 추가 명령 없이 geom_point() 함수를 그대로 사용하면 나타난 point가 하나의 점이 나타난 것인지 아니면 여러 개의 point들이 같은 위치에 겹쳐져 나타난 것인지 알기가 어렵습니다. 이걸 알기 위해서 자주 사용되는 방법은 geom_point() 함수에 alpha 인수를 적용하는 것입니다. 

alpha 인수는 point의 투명도를 조절하는 것으로, 사용자는 0에서 1 사이의 값을 입력하여 원하는 point의 투명도를 설정할 수 있습니다. alpha 인수 값이 0에 가까울수록 투명도가 높아지는 반면, 1에 가까울수록 투명도가 낮아집니다.

 

아래에서는 상기 norm 데이터에 대해 point의 투명도가 높도록 geom_point(alpha=1/10)를 적용하여 point의 겹쳐진 정도를 확인하도록 하였습니다. 아래 산점도에서 여러 개의 point가 겹친 부분에는 색이 진하게 나타나고, 그렇지 않은 부분은 연하게 나타나는 것을 볼 수 있습니다.

norm+geom_point(alpha=1/10)

 

alpha = 1/10 적용한 산점도