2024-06-28

R ggplot에서 geom_line() 사용할 때 x축이 자동 정렬 안되게 하려면

ggplot으로 그룹 별로 그래프 그리기 예제 에서 보이는 것 처럼, geom_line()을 쓰면 x값들을 자동으로 정렬해서 line을 그려줍니다. 


> df
  aa bb     cc
1  1 12  first
2  2 25  first
3  3 31  first
4  4 43  first
5  1 15 second
6  2 22 second
7  3 38 second
8  4 41 second

ggplot(df, aes(x=aa, y=bb)) + geom_line()



여기서, 정렬 되지 않은 원래의 data순서 그대로의 line을 보고 싶을 때가 있죠. 

그럴 때는 geom_line() 대신 geom_path()를 사용합니다. 

> ggplot(df, aes(x=aa, y=bb)) + geom_path()



두 개의 plot이 같은 data에서 나온 그래프임을 보여주기 위해서 point도 같이 그려보았습니다.

> ggplot(df, aes(x=aa, y=bb)) + geom_line() + geom_point()
> ggplot(df, aes(x=aa, y=bb)) + geom_path() + geom_point()



점들의 위치는 양쪽이 같네요. 하지만,  어떻게 연결해 주느냐에 따라 전혀 다른 plot으로 보입니다. 

다른 예를 하나 더 볼까요?

> theta <- seq(0, 2*pi, 1)
> df <- data.frame(x = cos(theta), y = sin(theta))
> ggplot(df, aes(x=x, y=y)) + geom_line()
> ggplot(df, aes(x=x, y=y)) + geom_path()





완전히 다르게 보이죠? geom_line()으로는 보이지않던 패턴이 geom_path()에서는 너무나 명확히 드러납니다.

어떻게 그래프를 그리는 지가 이렇게 중요하답니다.