Seaborn Turtorial study 7

김상민·2023년 3월 9일
0

self-directed learning

목록 보기
7/7
post-custom-banner

Objects interface

seaborn.objects 네임스페이스는 seaborn plot를 만들기 위한 완전히 새로운 인터페이스로 버전 0.12에 도입되었습니다. 이 인터페이스는 데이터를 변환하고 플롯하기 위한 컴포저블 클래스 모음으로 구성된 보다 일관성 있고 유연한 API를 제공합니다. 기존의 씨본 함수와 달리, 새로운 인터페이스는 matplotlib로 드롭다운하지 않고도 엔드투엔드 플롯 지정 및 사용자 지정을 지원하는 것을 목표로 합니다(필요한 경우 계속 사용할 수 있지만).

참고

객체 인터페이스는 현재 실험 단계이며 불완전합니다. 실제로 사용하기에는 충분히 안정적이지만, 분명 몇 가지 거친 부분과 누락된 기능이 있습니다.

Specifying a plot and mapping data (플롯 지정 및 데이터 매핑)

객체 인턴페이스 로드하는 방법

import seaborn.objects as so
  • seaborn.objects 네임스페이스는 모든 관련 클래스에 대한 액세스를 제공합니다. 가장 중요한 것은 Plot입니다. Plot 객체를 인스턴스화하고 해당 메서드를 호출하여 플롯을 지정합니다. 간단한 예제를 살펴보겠습니다:

(-- seaborn 버진
print(sns.__version__) 이 자꾸 아나콘다 프롬프트에서 seaborn 업그레이드를 해도 0.11.2고정이였느데
-mpip install seaborn==0.12.2로 설치하는 seaborn.objects 모듈이 설치 되었다 주의하자)

    so.Plot(penguins, x="bill_length_mm", y="bill_depth_mm")
    .add(so.Dot())
)

  • 스캐터 플롯을 생성하는 이 코드는 상당히 익숙해 보일 것입니다. seaborn.scatterplot()을 사용할 때와 마찬가지로, 깔끔한 데이터 프레임(펭귄)을 전달하고 그 중 두 개의 열을 플롯의 x 및 y 좌표에 할당했습니다. 하지만 여기서는 차트 유형부터 시작한 다음 데이터 할당을 추가하는 대신 데이터 할당부터 시작한 다음 그래픽 요소를 추가했습니다.

x축은 부리의 길이 y축은 부리의 깊이를 측정한 값을 산점도로 나타냈다.

Setting properties(속성설정)

  • dot class는 데이터 값을 그래픽으로 나타내는 객체인 마크의 예입니다. 각 마크에는 모양을 변경하도록 설정할 수 있는 여러 속성이 있습니다:
    so.Plot(penguins, x="bill_length_mm", y="bill_depth_mm")
    .add(so.Dot(color="g", pointsize=4))
)

색과 포인트사이즈를 변경해줬습니다.

Mapping properties(매핑 속성)

  • seaborn의 기능과 마찬가지로 데이터 값을 다양한 그래픽 속성에 매핑하는 것도 가능합니다:
(
    so.Plot(
        penguins, x="bill_length_mm", y="bill_depth_mm",
        color="species", pointsize="body_mass_g",
    )
    .add(so.Dot())
)

  • 이 기본 기능은 새롭지는 않지만, 함수 API와의 중요한 차이점은 프로퍼티를 직접 설정하는 것과 동일한 매개변수 이름을 사용하여 매핑한다는 점입니다(색조 대 색상 등 대신). 중요한 것은 프로퍼티가 정의되는 위치입니다. 도트를 초기화할 때 값을 전달하면 프로퍼티가 직접 설정되는 반면, 플롯을 설정할 때 변수를 할당하면 해당 데이터가 매핑됩니다.

  • 이러한 차이점 외에도 개체 인터페이스를 사용하면 훨씬 더 광범위한 마크 속성을 매핑할 수 있습니다:

(
    so.Plot(
        penguins, x="bill_length_mm", y="bill_depth_mm",
        edgecolor="sex", edgewidth="body_mass_g",
    )
    .add(so.Dot(color=".8"))
)

  • edgecolor 매개변수는 점 주변의 경계선 색상을 나타냅니다. 이 코드에서는 "sex" 열 값을 사용하여 점의 성별에 따라 경계선 색상을 다르게 설정하고 있습니다.

  • edgewidth 매개변수는 경계선의 두께를 나타냅니다. 이 코드에서는 "body_mass_g" 열 값을 사용하여 점의 몸무게에 따라 경계선의 두께를 다르게 설정하고 있습니다.

Defining groups(그룹 정의)

  • dot mark는 각 데이터 요소를 독립적으로 나타내므로 속성에 변수를 할당하면 각 점의 모양이 변경되는 효과만 있습니다. 라인과 같이 관측값을 그룹화하거나 연결하는 마크의 경우 고유한 그래픽 요소의 수 또한 결정합니다:
healthexp = sns.load_dataset("healthexp")
(
    so.Plot(healthexp, x="Year", y="Life_Expectancy", color="Country")
    .add(so.Line())
)


healthexp를 불러와주고

  • 그룹을 사용하여 시각적 속성을 변경하지 않고 그룹을 정의할 수도 있습니다:
    so.Plot(healthexp, x="Year", y="Life_Expectancy", group="Country")
    .add(so.Line())
)


이렇게 그룹화 하지 않고 그냥 보여주는 그리기도 있습니다.

이번 프로젝트때 실습 해봐야하는 챕터 인 것 같습니다.

이만 총총

profile
꾸준히 하고싶다
post-custom-banner

0개의 댓글