본문 바로가기

Software/Python

[Seaborn 연재] set_style과 boxplot, swarmplot

통계적 입장에서 그래프를 그릴때, (물론 matplotlib도 충분히 가능하지만) 유용한 모듈인 seaborn을 데리고 한 5회정도 이야기를 할려고 합니다. 꽤 괜찮은 결과를 쉬운 과정을 통해 보여주거든요.

먼저 conda를 사용하는 경우, conda install seaborn으로 설치해 주어야 합니다.^^

일단, seaborn없이 matplotlib로 먼저 그래프를 그려보죠^^

이제 다시 seaborn을 import해서 그려보면 위와 같이 약간 다른 스타일의 그래프가 출력됩니다. seaborn을 사용할 때는 matplotlib를 먼저 import하고 사용해야 합니다.

seaborn은 set_style이라는 명령으로 전체적인 스타일을 조절할 수 있습니다. 위 그림은 whitegrid 스타일입니다.

위 그림은 dark이구요^^

이번에는 white^^

ticks라는 스타일을 사용하면 위그림처럼 됩니다.

아.. despine()이라는 함수를 사용하면 약간 교과서적(^^)인 모양이 되기도 합니다.^^

despine()안에 offset 옵션을 주어서 위와 같이 표현할 수 있습니다.

왼쪽 그래프마저 날려버린거구요^^

seaborn은 연습용 데이터를 몇 개 가지고 있는데요.. tips라는 데이터를 로딩(load_dataset)해서 보겠습니다. 전체 영수증 금액과 받은 팁이 표시되어 있구요... 성별과, 흡연여부, 요일, 점심/저녁 구분, 인원수가 나타나 있습니다.

이번엔 boxplot을 그려보죠. 전체 금액인 total_bill을 변수로 그립니다.

이번에는 요일별로 구분지어서 그리는 것입니다. seaborn은 원 데이터에서 구분짓고 싶은 column을 지정하는 것만으로도 충분히 간단히 그 결과를 알수 있습니다.

이번에는 hue라는 옵션을 만져서 흡연여부를 나눠서 생각해 볼 수 있도록 하고 있습니다. 그리고 색상 palette를 몇 개 가지고 있는데 이를 사용해서 색상 set에 대해 고민할 필요가 없도록 하고 있습니다.

이번에는 다른 팔렛트^^

이번에는 hue를 점심/저녁으로 구분하도록 했습니다.

혹은 점심 저녁만 구분지어서 또 볼 수 있구요^^

 위 그래프는 swarmplot이라는 것입니다. 데이터가 모여있는 정도를 잘 보여주고 있습니다.

boxplot과 함께 사용하면 꽤 좋은 성과를 얻을 수 있습니다.^^.

이번에는 FacetGrid라는 명령으로 전체 column을 점심/저녁으로 구분하고, 각각에 대해 남여로 구분하여 전체 금액을 boxplot으로 그리는데요... 그 안에서 구분은 흡연 여부로 결정하도록 했습니다. 단순히 seaborn의 tutorial을 학습한 것이지만, 그래도 당분간은 seaborn 이야기를 해볼까 합니다.^^

반응형