[R] 파이차트(pie plot) 기본, 색상 바꾸기

반응형
    반응형

    파이차트는 범주형 변수에 대한 상대 도수를 원그래프의 형태로 시각화하는 경우에 사용하는 함수입니다. 보통 뉴스에서 통계로 퍼센트를 확인할 때 많이 사용하는 차트입니다.

    R에서 그릴 때 값만 작성해도 되지만 의미있는 시각화를 위해서는 라벨링을 해주어야 합니다. 즉, 반드시 필요한건 딱 두가지입니다. 값을 나타내는 수치형 변수와 값의 라벨링을 위한 범주형 변수가 필요합니다. 그 나머지는 옵션에 해당합니다.

    기본 라이브러리로 파이차트 그리기

    파이차트를 그리려면 R에 내장되어 있는 pie라는 함수를 쓰면 됩니다.

    v = c(23,15,5)
    k = c('1st','2nd','3nd')

    먼저 값만 적용해보겠습니다.

    pie(x=v)

    라벨을 벡터의 인덱스로 표시를 하게 됩니다.
    큰 의미가 없는 시각화가 되고 맙니다.

    라벨링을 하기 위해서는 필요한 라벨을 만들거나 가져옵니다.
    위에서 만든 k라는 벡터로 라벨링을 해보겠습니다.

    pie(x=v,labels=k)

    보통 뉴스에 나오는 모양은 퍼센트로 나타내는데 pie로도 가능합니다. 퍼센트를 만들어 labels 값으로 입력합니다.

    pct = round(v/sum(v)*100,1)
    lab = paste(pct,'%')
    pie(x=v,label=lab)

    퍼센트 같은 경우 글자를 안에 넣는게 더 좋은데 pie 함수 안에는 그런 기능이 없기 때문에 따로 함수를 만들어주어야 합니다. 근데 이게 쉬운 일이 아닙니다. 원 안에 글자를 넣으려면 비율을 누적해 각도를 얻어 좌표를 찾아야 합니다. 아니면 ggplot2을 사용합니다. 이에 대한 자세한 내용은 다음 포스팅을 참고하시기 바랍니다.

    [R] 파이차트 원 안에 글자 넣기

     

    [R] 파이차트 원 안에 글자 넣기

    파이차트 안에 글자를 넣는 방법입니다. 사실 ggplot2로 하면 다 되긴 하는데 정교하게 만들고 싶다면 수학을 쓸 수 있다는 걸 보여드리고 싶어서 포스팅을 합니다. 약간 뻘짓이지만 이런 방법도

    seong6496.tistory.com

     

    색상 넣기

    색상은 직접 색상을 넣어주거나 rainbow(색상 수)으로 넣을 수 있습니다.

    pie(x=v,label=lab,col=c('Red','Blue','Green'))
    # 또는 pie(x=v,label=lab,col=rainbow(length(v)))

    사선으로 표시

    색상이 아닌 사선으로만 표시할 수도 있습니다.
    density로 인치당 사선의 갯수를 정하고 angle을 통해 각도를 정합니다.

    pie(x=v,labels=k,density=10,angle=c(20,90,30))

    ggplot2로 파이차트 그리기

    ggplot2로도 그릴 수 있습니다.
    그런데 ggplot2은 애초에 데이터프레임을 다루는 패키지이므로 데이터를 데이터프레임으로 바꿔주어야 합니다.

    df = data.frame(rank=k,value=v)
    library(ggplot2)
    pie = ggplot(df,aes(x="",y=value,fill=rank))+geom_bar(width=1,stat='identity')+coord_polar('y',start=0)

    ggplot2에서는 figure을 먼저 만들어야 하는데 각 값에 대한 지정을 해주어야 합니다. 가장 기본적으로 채워야하는건 ggplot+geom_bar+coord_polor 를 채워야 합니다.
    ggplot은 넣을 데이터를 지정하고 geom_bar는 기준이 되는 라벨에 맞게 그림이 나올 수 있는 설정, coord_polar으로 축 기준을 정합니다.
    geom_bar이나 coord_polar를 적용하지 않으면 프레임만 나옵니다.

    색상 넣기

    직접 색상값을 넣어서 색상을 지정하려면 scale_fill_manual 이라는 함수를 추가해줍니다. 값은 색상코드를 넣어줍니다. 색상코드는 대문자, 소문자 모두 가능합니다.

    pie+scale_fill_manual(values=c('#999999','#fe8b4e','#56B4E9'))

    팔레트도 쓸 수 있는데 일전에 소개했던 color brewer를 그대로 씁니다.


    자세한 내용은 포스팅을 참고하시기 바랍니다.
    [Python] seaborn color 팔레트

     

    [Python] seaborn color 팔레트

    seaborn color 팔레트 설정하는 방법입니다. 일단 컬러맵을 직접 설정하는 방법도 있는데 이는 이전에 포스팅으로 해놨습니다. 참고하시기 바랍니다. [python] heatmap 색상바꾸기(컬러맵 만들기) heatmap

    seong6496.tistory.com

    팔레트 중에 Blues를 적용해보겠습니다.
    scale_fill_brewer를 추가하여 사용합니다.

    pie + scale_fill_brewer(palette='Blues')+theme_minimal()

    ggplot2는 기본적으로 라벨을 제공하는 라벨바를 없애고 싶다면 theme(legend.position='none')을 추가합니다.

    pie + scale_fill_brewer(palette='Blues')+theme_minimal()+theme(legend.position='none')

     

     

    관련 포스팅
    [Python] seaborn color 팔레트
    [R] 히스토그램(hist) 그리기

    [R] 파이차트 원 안에 글자 넣기

    댓글

    Designed by JB FACTORY

    ....