logo

Matplotlib을 사용하여 Python의 상자 그림

박스 플롯이란 무엇입니까?

상자 그림은 상자와 일부 수직선을 사용하여 데이터 분포를 시각화하는 방법입니다. 수염 플롯으로 알려져 있습니다. 데이터는 다음과 같은 5가지 주요 범위로 분산될 수 있습니다.

    최저한의: Q1-1.5*IQR1사분위수(Q1): 25번째 백분위수중앙값:50번째 백분위수3분기(Q3):75번째 백분위수최고: Q3+1.5*IQR

여기서 IQR은 사분위간 범위 이는 첫 번째 사분위수(Q1)에서 시작하여 세 번째 사분위수(Q3)에서 끝납니다.

상자 그림 시각화

Matplotlib을 사용하여 Python의 상자 그림

상자 그림에서 범위를 벗어난 점을 이상값이라고 합니다. 데이터의 상자 그림을 만들어 다음 사항을 확인할 수 있습니다.

  • 데이터세트의 이상값 수
  • 데이터가 왜곡된 것인지 아닌지
  • 데이터의 범위

최소에서 최대까지의 데이터 범위를 수염 한계라고 합니다. Python에서는 모든 데이터 세트의 상자 그림을 만들 수 있는 boxplot()이라는 내장 함수가 있는 matplotlib 모듈의 pyplot 모듈을 사용합니다.

통사론:

 matplotlib.pyplot.boxplot(data,notch=none,vert=none,patch_artist,widths=none) 

boxplot() 함수에는 데이터 세트의 더욱 매력적이고 놀라운 상자 그림을 만드는 데 사용할 수 있는 많은 속성이 있습니다.

    데이터: 데이터는 플롯될 배열 또는 배열의 시퀀스여야 합니다.골짜기: 이 매개변수는 true 또는 false인 부울 값만 허용합니다.녹색: 이 속성은 부울 값을 허용합니다. true로 설정하면 그래프가 수직이 됩니다. 그렇지 않으면 수평이 됩니다.위치: 상자의 위치를 ​​정의하는 정수 배열을 허용합니다.너비: 상자의 너비를 정의하는 정수 배열을 허용합니다.패치_아티스트: 이 매개변수는 true 또는 false 중 하나의 부울 값을 허용하며 선택적 매개변수입니다.라벨: 각 데이터 포인트에 대한 레이블을 정의하는 문자열을 허용합니다.평균선: 부울 값을 허용하며 선택 사항입니다.주문하다: 상자 그림의 순서를 설정합니다.부트스트랩: 노치가 있는 상자 그림의 범위를 지정하는 정수 값을 허용합니다.

예1:

numpy 배열의 무작위 데이터 세트를 만들고 상자 그림을 만듭니다.

 import matplotlib.pyplot as plt import numpy as np np.random.seed(15) dataSet = np.random.normal(100, 25, 200) print(dataSet) figure = plt.figure(figsize =(10, 8)) plt.boxplot(dataSet) plt.show() 

산출:

Matplotlib을 사용하여 Python의 상자 그림

설명:

위 코드에서는 우선 코드에 numpy 및 matplotlib 라이브러리를 가져왔습니다. 그런 다음 무작위 데이터 세트를 생성하고 boxplot() 함수를 사용하여 상자 그림을 그렸습니다.

예2:

동일한 파일에 여러 개의 상자 그림을 동시에 만들 수 있습니다.

 import matplotlib.pyplot as plt import numpy as np np.random.seed(10) dataSet1 = np.random.normal(100, 10, 220) dataSet2 = np.random.normal(80, 20, 200) dataSet3 = np.random.normal(60, 35, 220) dataSet4 = np.random.normal(50, 40, 200) dataSet = [dataSet1, dataSet2, dataSet3, dataSet4] figure = plt.figure(figsize =(10, 7)) ax = figure.add_axes([0, 0, 1, 1]) bp = ax.boxplot(dataSet) plt.show() 

산출:

Matplotlib을 사용하여 Python의 상자 그림

설명:

위 코드에는 numpy의 무작위 방법을 사용하는 4개의 데이터 세트가 있습니다. 그런 다음 4개의 데이터 세트 목록을 생성하고 이를 boxplot() 함수 내에서 사용합니다.

예시 3:

boxplot() 함수의 일부 속성을 사용하여 플롯을 사용자 정의할 수 있습니다.

 import matplotlib.pyplot as plt import numpy as np np.random.seed(10) dataSet1 = np.random.normal(100, 10, 220) dataSet2 = np.random.normal(80, 20, 200) dataSet3 = np.random.normal(60, 35, 220) dataSet4 = np.random.normal(50, 40, 200) dataSet = [dataSet1, dataSet2, dataSet3, dataSet4] figure = plt.figure(figsize =(10, 7)) ax = figure.add_subplot(111) bp = ax.boxplot(dataSet, patch_artist = True,notch ='True', vert = 0) colors = ['#00FF00','#0F00FF', '#F00FF0','#FFFF0F'] for patch, color in zip(bp['boxes'], colors): patch.set_facecolor(color) for whisker in bp['whiskers']: whisker.set(color ='#8E008B',linewidth = 1.4,linestyle =':') for cap in bp['caps']: cap.set(color ='#8E008B',linewidth = 2.1) for median in bp['medians']: median.set(color ='blue',linewidth = 3) for flier in bp['fliers']: flier.set(marker ='D',color ='#d7298c',alpha = 0.6) ax.set_yticklabels(['dataSet1', 'dataSet2','dataSet3', 'dataSet4']) plt.title('Customized box plot using attributes') ax.get_xaxis().tick_bottom() ax.get_yaxis().tick_left() plt.show() 

산출:

Matplotlib을 사용하여 Python의 상자 그림

설명:

위 코드에서는 무작위 함수를 사용하여 4개의 데이터 세트를 생성하고 이를 목록에 설정했습니다. 이제 색상 목록과 set_facecolor() 함수를 사용하여 각 상자 그림에 대해 서로 다른 색상을 설정했습니다.

각 상자 그림의 선 너비를 설정하고 각 상자 그림의 레이블도 설정했습니다. 속성 vert =0을 설정했는데, 이는 모든 플롯이 수평 모드에 있음을 의미합니다.