program tip

matplotlib 객체 지향 인터페이스를 사용하여 seaborn으로 플로팅

radiobox 2020. 9. 5. 09:39
반응형

matplotlib 객체 지향 인터페이스를 사용하여 seaborn으로 플로팅


matplotlibOOP 스타일로 사용하는 것을 강력히 선호합니다 .

f, axarr = plt.subplots(2, sharex=True)
axarr[0].plot(...)
axarr[1].plot(...)

이렇게하면 여러 그림과 하위 그림을 쉽게 추적 할 수 있습니다.

질문 :이 방법으로 seaborn을 사용하는 방법? 또는 이 예제 를 OOP 스타일 로 변경하는 방법은 무엇입니까? 확인하는 방법 seaborn과 같은 플로팅 기능을 lmplot하는 Figure또는 Axes그것으로 플롯?


사용하는 seaborn 기능에 따라 약간 다릅니다.

seaborn의 플로팅 기능은 크게 두 가지 클래스로 나뉩니다.

  • "축 수준"기능을 포함 regplot, boxplot, kdeplot, 등 다수
  • "그림 수준"을 포함하여 기능, lmplot, factorplot, jointplot및 하나 또는 두 개의 다른

첫 번째 그룹은 명시 적 ax인수 를 취하고 Axes객체를 반환하여 식별됩니다 . 이것이 암시하는 것처럼, 당신은 그들에게 당신 Axes전달함으로써 "객체 지향"스타일로 그들을 사용할 수 있습니다 :

f, (ax1, ax2) = plt.subplots(2)
sns.regplot(x, y, ax=ax1)
sns.kdeplot(x, ax=ax2)

Axes 수준의 함수는에 그려 질 뿐이며 Axes그렇지 않으면 그림과 엉망이되지 않으므로 객체 지향 matplotlib 스크립트에서 완벽하게 공존 할 수 있습니다.

두 번째 기능 그룹 (그림 수준)은 결과 플롯이 항상 "의미있는"방식으로 구성되는 여러 축을 포함 할 수 있다는 사실로 구별됩니다. 즉, 함수는 그림을 완전히 제어해야하므로 lmplot이미 존재 하는 그림에 플로팅하는 것이 불가능 합니다. 함수를 호출하면 항상 Figure를 초기화하고 그리는 특정 플롯에 맞게 설정합니다.

그러나을 호출 lmplot하면 유형의 객체가 반환됩니다 FacetGrid. 이 객체에는 플롯의 구조에 대해 약간 알고있는 결과 플롯에서 작동하는 몇 가지 메서드가 있습니다. 또한 FacetGrid.figFacetGrid.axes인수 에서 기본 그림과 축 배열을 노출합니다 . jointplot기능은 매우 유사하지만 JointGrid객체를 사용 합니다. 따라서 객체 지향 컨텍스트에서 이러한 함수를 계속 사용할 수 있지만 모든 사용자 정의는 함수를 호출 한 후에 이루어져야합니다.

참고 URL : https://stackoverflow.com/questions/23969619/plotting-with-seaborn-using-the-matplotlib-object-oriented-interface

반응형