matplotlib
박스 플롯
수색…
박스 플롯 기능
Matplotlib 은 boxplot을 자체적으로 구현합니다. 이 함수의 관련 측면은 기본적으로 boxplot이 중간 값 (백분위 수 50 %)을 빨간색 선으로 표시한다는 것입니다. 상자는 Q1과 Q3 (백분위 수 25와 75)을 나타내며 수염은 데이터의 범위에 대한 아이디어를 제공합니다 (Q1 - 1.5 IQR, Q3 + 1.5 IQR, IQR은 사 분위 범위이지만 이는 확인이 부족함). 또한이 범위를 벗어나는 샘플은 마커로 표시됩니다 (이름이 플라이어 임).
참고 : boxplot의 모든 구현이 동일한 규칙을 따르는 것은 아닙니다. 아마도 가장 일반적인 boxplot 다이어그램은 위스커를 사용하여 최소값과 최대 값을 나타냅니다 (플라이어가 존재하지 않음). 또한이 플롯은 box-and-whisker plot 및 box-and-whisker diagram 이라고도합니다.
다음의 레서피는 현재의 matplotlib에서 boxplot을 구현할 때 할 수있는 일 중 몇 가지를 보여줍니다 :
import matplotlib.pyplot as plt
import numpy as np
X1 = np.random.normal(0, 1, 500)
X2 = np.random.normal(0.3, 1, 500)
# The most simple boxplot
plt.boxplot(X1)
plt.show()
# Changing some of its features
plt.boxplot(X1, notch=True, sym="o") # Use sym="" to shown no fliers; also showfliers=False
plt.show()
# Showing multiple boxplots on the same window
plt.boxplot((X1, X2), notch=True, sym="o", labels=["Set 1", "Set 2"])
plt.show()
# Hidding features of the boxplot
plt.boxplot(X2, notch=False, showfliers=False, showbox=False, showcaps=False, positions=[4], labels=["Set 2"])
plt.show()
# Advanced customization of the boxplot
line_props = dict(color="r", alpha=0.3)
bbox_props = dict(color="g", alpha=0.9, linestyle="dashdot")
flier_props = dict(marker="o", markersize=17)
plt.boxplot(X1, notch=True, whiskerprops=line_props, boxprops=bbox_props, flierprops=flier_props)
plt.show()
결과는 다음과 같습니다.
- 기본 matplotlib 상자 그림
- 함수 인수를 사용하여 boxplot의 일부 기능 변경
- 동일한 플롯 창에있는 다중 상자 그림
- boxplot의 일부 기능 숨기기
- 소품을 사용하여 상자 플롯의 고급 사용자 정의
boxplot의 고급 사용자 정의를 수행하려면 다음과 같이 구축 한 소품 사전을 알아야합니다 (예 :).
line_props = dict(color="r", alpha=0.3)
bbox_props = dict(color="g", alpha=0.9, linestyle="dashdot")
flier_props = dict(marker="o", markersize=17)
plt.boxplot(X1, notch=True, whiskerprops=line_props, boxprops=bbox_props, flierprops=flier_props)
plt.show()
... 대부분은 Line2D 객체를 참조한다. 즉, 해당 클래스에서 사용할 수있는 인수 만 변경할 수 있습니다. whiskerprops
, boxprops
, flierprops
및 capprops
와 같은 키워드가 있음을 알 수 있습니다. 이것들은 소품을 추가로 사용자 정의하기 위해 소품 사전을 제공하는 데 필요한 요소입니다.
참고 :이 구현을 사용하여 boxplot을 추가로 사용자 정의하는 것은 어려울 수 있습니다. 어떤 경우에는 패치 와 같은 다른 matplotlib 요소를 사용하여 상자 플롯을 빌드하는 것이 유리할 수 있습니다 (예 : 상자 요소에 상당한 변경).