이번 포스팅에서는 R ggplot2 로 y축이 2개 있는 이중 축 그래프 그리는 방법을 소개하겠습니다.
엑셀로는 이중 축 그래프 그리기가 그리 어렵지 않은데요, R의 ggplot 도 sec.axis 을 사용하면 두번째 y축을 추가할 수 가 있습니다.
먼저 예제로 사용할 데이터셋을 만들어보겠습니다.
#========================================= rm(list=ls()) # clear all # make a DataFrame # convert a matrix into a dataframe # column name
> head(df) x y1 y2 1 -4.292296 3.897550e-12 2.685790e-09 2 -3.910212 9.394710e-12 3.082191e-08 3 -3.528129 2.264455e-11 2.761049e-07 4 -3.146045 5.458189e-11 1.930705e-06 5 -2.763961 1.315625e-10 1.053865e-05 6 -2.381878 3.171143e-10 4.490364e-05
|
두 개 y축의 요약 정보를 보니 최대값의 차이가 매우 크다는 것을 알 수 있습니다. y1 축과 y2 축의 비율을 보니 약 651배 차이가 나네요. 이런 상태에서 그래프를 그리면 y2 축의 그래프가 바닥에 쫙 붙어서 그려지므로 두 축 간의 패턴, 특징, 구조를 비교하기가 어렵게 됩니다. 따라서 y2 축의 데이터를 y1축과 비교하기 쉽도록 y2에 'y1과 y2의 최대값의 비율(max_ratio)'를 곱해서 그래프를 그려보겠습니다.
> # max ratio b/w 2 axes
|
y1 데이터로는 선 그래프를 그리고, y2 데이터로는 막대그래프를 그려보겠습니다.
이때 y2 에 해당하는 두번째 축의 막대그래프를 그릴 때는
- (1) max(y1)/max(y2) 로 계산한 두 축의 최대값의 비율인 651을 y2에 곱했으며
(geom_bar(aes(y = y2*max_ratio)
- (2) scale_y_continuous(sec.axis = sec_axis(~.*maxratio, name="y2") 를 사용해서 오른쪽의 두번째 축을 추가하였습니다.
> # Dual y-axes plot using ggplot2 sec.axis > library(ggplot2) > > g <- ggplot(df, aes(x = x)) > g <- g + geom_line(aes(y = y1), colour = "red", size = 2) > > # adding the relative result5.data.A,
|
해석하기에 편리하도록 데이터의 소스가 무엇인지를 나타내는 텍스트와 화살표를 추가해보겠습니다.
|
많은 도움이 되었기를 바랍니다.