[Python] 4개 변수로 점의 크기와 색깔을 다르게 산점도 그리기 (Scatter plot with 4 variables, different size & color) (3/4)
Python 분석과 프로그래밍/Python 그래프_시각화 2019. 1. 13. 23:47이번 포스팅은 두 개의 연속형 변수에 대한 관계를 파악하는데 유용하게 사용할 수 있는 산점도(Scatter Plot) 의 세번째 포스팅으로서 4개의 연속형 변수를 사용하여 X축, Y축, 점의 색깔(color)과 크기(size)을 다르게 하는 방법을 소개합니다.
즉, 산점도를 사용하여 4차원의 데이터를 2차원에 시각화하는 방법입니다.
(2) 그룹별 산점도 (Scatter Plot by Groups) (3) 4개 변수로 점의 크기와 색을 다르게 산점도 그리기 (Scatter plot with different size, color) (4) 산점도 행렬 (Scatter Plot Matrix)
|
예제로 활용할 데이터는 iris 의 4개의 연속형 변수들입니다.
# importing libraries import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns plt.rcParams['figure.figsize'] = [10, 8] # setting figure size
|
# loading 'iris' dataset from seaborn iris = sns.load_dataset('iris') iris.shape (150, 5) iris.head()
|
(1) matplotlib에 의한 4개 연속형 변수를 사용한 산점도 (X축, Y축, 색, 크기) |
# 4 dimensional scatter plot with different size & color plt.scatter(iris.sepal_length, # x iris.sepal_width, # y alpha=0.2, s=200*iris.petal_width, # marker size c=iris.petal_length, # marker color cmap='viridis') plt.title('Scatter Plot with Size(Petal Width) & Color(Petal Length)', fontsize=14) plt.xlabel('Sepal Length', fontsize=12) plt.ylabel('Sepal Width', fontsize=12) plt.colorbar() plt.show() |
점(marker)의 모양을 네모로 바꾸고 싶으면 marker='s' 로 설정해주면 됩니다.
# 4 dimensional scatter plot with different size & color plt.scatter(iris.sepal_length, # x iris.sepal_width, # y alpha=0.2, s=200*iris.petal_width, # marker size c=iris.petal_length, # marker color cmap='viridis', marker = 's') # square shape plt.title('Size(Petal Width) & Color(Petal Length) with Square Marker', fontsize=14) plt.xlabel('Sepal Length', fontsize=12) plt.ylabel('Sepal Width', fontsize=12) plt.colorbar() plt.show()
|
(2) seaborn에 의한 4개 연속형 변수를 사용한 산점도 (X축, Y축, 색, 크기) |
seaborn 의 산점도 코드는 깔끔하고 이해하기에 쉬으며, 범례도 잘 알아서 색깔과 크기를 표시해주는지라 무척 편리합니다.
# 4 dimensional scatter plot by seaborn sns.scatterplot(x='sepal_length', y='sepal_width', hue='petal_length', size='petal_width', data=iris) plt.show() |
(3) pandas에 의한 4개 연속형 변수를 사용한 산점도 (X축, Y축, 색, 크기) |
pandas의 DataFrame에 plot(kind='scatter') 로 해서 color=iris['petal_length']로 색깔을 설정, s=iris['petal_width'] 로 크기를 설정해주면 됩니다. pandas 산점도 코드도 깔끔하고 이해하기 쉽긴 한데요, 범례 추가하기가 쉽지가 않군요. ^^;
iris.plot(kind='scatter', x='sepal_length', y='sepal_width', color=iris['petal_length'], s=iris['petal_width']*100) plt.title('Size(Petal Width) & Color(Petal Length) with Square Marker', fontsize=14) plt.show() |
참고로, 산점도의 점(marker)의 모양(shape)을 설정하는 심벌들은 아래와 같으니 참고하시기 바랍니다.
# set the size plt.rcParams['figure.figsize'] = [10, 8] # remove ticks and values of axis plt.xticks([]) plt.yticks([]) # markers' shape all_shape=['.','o','v','^','>','<','s','p','*','h','H','D', 'd', '', '', ''] num = 0 for x in range(1, 5): for y in range(1, 5): num += 1
plt.plot(x, y, marker = all_shape[num-1], markerfacecolor='green', markersize=20, markeredgecolor='black')
plt.text(x+0.1, y, all_shape[num-1], horizontalalignment='left', size='medium', color='black', weight='semibold')
plt.title('Markers', fontsize=20) plt.show() |
많은 도움이 되었기를 바랍니다.
이번 포스팅이 도움이 되었다면 아래의 '공감~'를 꾹 눌러주세요. ^^
다음번 포스팅에서는 산점도 행렬 (Scatter Plot Matrix) 에 대해서 소개하겠습니다.
'Python 분석과 프로그래밍 > Python 그래프_시각화' 카테고리의 다른 글
[Python] 선 그래프 (Line Graph) (3) | 2019.01.16 |
---|---|
[Python] 산점도 행렬 (Scatterplot Matrix) (4/4) (0) | 2019.01.15 |
[Python] 그룹별 산점도 점 색깔과 모양 다르게 하기 (Scatter Plot by Groups) (2/4) (3) | 2019.01.13 |
[Python] 산점도 그래프 (Scatter Plot) (1/4) (0) | 2019.01.13 |
[Python] 원 그래프 (Pie Chart), 하위 그룹을 포함한 도넛 그래프 (Donut Chart with Subgroups) (1) | 2019.01.12 |