"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Python에서 열 값별로 산점도를 색상으로 구분하는 방법은 무엇입니까?

Python에서 열 값별로 산점도를 색상으로 구분하는 방법은 무엇입니까?

2024-11-09에 게시됨
검색:767

How to Color-Code Scatter Plots by Column Values in Python?

Python의 열 값별 색상 코딩 산점도

데이터 시각화에서 색상을 다양한 범주에 할당하면 명확성이 향상되고 패턴이 드러날 수 있습니다. 이 기능은 R용 ggplot2에서 쉽게 사용할 수 있지만 pandas 및 matplotlib를 사용하여 Python에서 동일한 기능을 어떻게 달성할 수 있습니까?

업데이트: Seaborn Enhancements

원래 답변 이후 , Seaborn은 유익하고 시각적으로 매력적인 플롯을 만들기 위한 강력한 라이브러리로 부상했습니다. 최근 업데이트는 열 값을 기반으로 산점도를 색칠하는 편리한 기능을 제공합니다:

  • seaborn.replot 사용: 이 고급 기능은 matplotlib.pyplot.scatter와 Seaborn의 기능을 결합합니다. FacetGrid. 지정된 색조 및 순서 매개변수를 기반으로 색상 코딩을 자동으로 처리합니다.
  • matplotlib.pyplot.scatter를 seaborn.FacetGrid에 매핑: 원래 접근 방식과 유사하게 분산 함수를 FacetGrid를 사용하고 색조를 기준으로 색상을 사용자 정의합니다.

Original Pandas 및 Matplotlib 접근 방식

Matplotlib를 사용하여 직접적인 접근 방식을 원하는 경우 색상을 할당하는 사용자 정의 기능이 있습니다. 범주형 열을 기준으로 포인트로:

import matplotlib.pyplot as plt
import pandas as pd

def dfScatter(df, xcol='Height', ycol='Weight', catcol='Gender'):
    fig, ax = plt.subplots()
    categories = np.unique(df[catcol])
    colors = np.linspace(0, 1, len(categories))
    colordict = dict(zip(categories, colors))

    df["Color"] = df[catcol].apply(lambda x: colordict[x])
    ax.scatter(df[xcol], df[ycol], c=df["Color"])
    return fig

이 함수는 고유한 범주 값에서 색상 사전을 생성하고 해당 색상을 데이터 포인트에 할당합니다. 그런 다음 색상으로 구분된 점으로 분산형 차트가 생성됩니다.

제공된 샘플 데이터 프레임 사용:

df = pd.DataFrame({'Height': np.append(np.random.normal(6, 0.25, size=5), np.random.normal(5.4, 0.25, size=5)),
                   'Weight': np.append(np.random.normal(180, 20, size=5), np.random.normal(140, 20, size=5)),
                   'Gender': ["Male", "Male", "Male", "Male", "Male",
                              "Female", "Female", "Female", "Female", "Female"]})

데이터프레임을 사용하여 dfScatter 함수 호출:

fig = dfScatter(df)
fig.savefig('color_coded_scatterplot.png')

포인트가 성별에 따라 색상이 지정되는 산점도를 생성합니다.

[성별에 따라 색상이 지정된 산점도 이미지]

Seaborn의 고급 기능과 사용자 정의 dfScatter 함수는 Python의 산점도에 색상 코딩을 추가하는 유연한 옵션을 제공하여 데이터 시각화를 더욱 유익하고 시각적으로 매력적으로 만듭니다.

릴리스 선언문 이 글은 1729320380에서 재인쇄되었습니다. 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3