Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Seaborn 조인트 플롯(jointplot)에서 각 포인트의 색상과 마커 개별적으로 변경하기

Seaborn의 jointplot()은 두 변수 간의 관계를 산점도와 주변 분포(히스토그램)가 결합된 형태로 시각화해 주는 강력한 도구입니다. 기본 설정으로는 모든 포인트가 동일한 스타일로 그려지지만, 축을 초기화한 후 포인트를 하나씩 다시 그리면 각 데이터 포인트마다 고유한 색상과 마커를 적용할 수 있습니다. 아래에서 단계별로 살펴보겠습니다.

구현 단계

  • 그림(figure) 크기를 설정하고 서브플롯 사이 및 주변의 여백(padding)을 자동으로 조정합니다.
  • 온라인 저장소에서 예제 데이터셋(tips)을 로드합니다. (인터넷 연결 필요)
  • jointplot() 메서드로 tips 데이터를 플롯합니다.
  • cla() 메서드로 조인트 영역의 현재 축(ax_joint)을 초기화하여 기본 산점도를 제거합니다.
  • 각 포인트에 사용할 색상(RGB 값)과 마커 목록을 생성합니다.
  • 반복문을 통해 각 데이터 포인트를 개별적인 색상과 마커로 다시 그립니다.
  • set_axis_labels() 메서드로 축 레이블을 설정합니다.
  • show() 메서드로 최종 그림을 화면에 표시합니다.

예제 코드

from matplotlib import pyplot as plt
import seaborn as sns
import numpy as np

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

tips = sns.load_dataset("tips")
g = sns.jointplot("total_bill", "tip", data=tips, height=4.50)

g.ax_joint.cla()

colors = np.random.random((len(tips), 3))
markers = ['v', '^', '<', '*', 'o'] * 100

for i, row in enumerate(tips.values):
    g.ax_joint.plot(row[0], row[1], color=colors[i], marker=markers[i])

g.set_axis_labels('total bill', 'tip', fontsize=10)
plt.show()

코드 설명

np.random.random((len(tips), 3))는 데이터 포인트 수만큼 무작위 RGB 색상 배열을 생성합니다. 마커 리스트는 * 100으로 반복되어 전체 데이터 행을 커버할 수 있도록 합니다. g.ax_joint.cla()를 호출하는 이유는 jointplot이 기본적으로 그린 산점도를 지우고, 우리가 원하는 개별 스타일의 포인트로 새로 그리기 위함입니다.

참고: Seaborn 0.12 이상 버전에서는 위치 인자 대신 sns.jointplot(x="total_bill", y="tip", data=tips)처럼 키워드 인자를 사용하는 것이 권장됩니다.

실행 결과

Seaborn 조인트 플롯(jointplot)에서 각 포인트의 색상과 마커 개별적으로 변경하기