Matplotlib을 사용하여 Python의 상자 그림
ㅏ 상자 그림 ~로도 알려져 있다 수염 플롯 최소값, 1분위수, 중앙값, 3분위수, 최대값과 같은 속성을 갖는 데이터 값 집합의 요약을 표시하기 위해 생성됩니다. 상자 그림에서는 첫 번째 사분위수에서 세 번째 사분위수까지 상자가 생성되고 중앙값에서 상자를 통과하는 수직선도 있습니다. 여기서 x축은 그래프로 표시할 데이터를 나타내고 y축은 빈도 분포를 나타냅니다.
상자 그림 만들기
matplotlib 라이브러리의 matplotlib.pyplot 모듈은 상자 그림을 만들 수 있는 boxplot() 함수를 제공합니다.
통사론:
matplotlib.pyplot.boxplot(data, notch=None, vert=None, patch_artist=None, widths=None)
매개변수:
| 기인하다 | 값 |
|---|---|
| 데이터 | 플롯할 배열 또는 배열 시퀀스 |
| 골짜기 | 선택적 매개변수는 부울 값을 허용합니다. |
| 녹색 | 선택적 매개변수는 수평 및 수직 플롯에 대해 각각 false 및 true 부울 값을 허용합니다. |
| 부트스트랩 | 선택적 매개변수는 int가 노치가 있는 상자 그림 주위의 간격을 지정하는 것을 허용합니다. |
| 사용자 중앙값 | 선택적 매개변수는 데이터와 호환되는 배열 또는 배열 차원의 시퀀스를 허용합니다. |
| 위치 | 선택적 매개변수는 배열을 받아들이고 상자의 위치를 설정합니다. |
| 너비 | 선택적 매개변수는 배열을 허용하고 상자의 너비를 설정합니다. |
| 패치_아티스트 | 부울 값을 갖는 선택적 매개변수 |
| 라벨 | 문자열의 시퀀스는 각 데이터 세트에 대한 레이블을 설정합니다. |
| 평균선 | 부울 값을 갖는 선택 사항으로 평균선을 상자의 전체 너비로 렌더링하려고 합니다. |
| 주문하다 | 선택적 매개변수는 상자 그림의 순서를 설정합니다. |
ax.boxplot() 메소드에 제공된 데이터 값은 Numpy 배열, Python 목록 또는 배열의 Tuple일 수 있습니다. numpy.random.normal()을 사용하여 임의의 데이터를 생성하여 상자 그림을 생성해 보겠습니다. 평균, 표준 편차 및 원하는 값 수를 인수로 사용합니다.
예:
파이썬3
# Import libraries> import> matplotlib.pyplot as plt> import> numpy as np> # Creating dataset> np.random.seed(> 10> )> data> => np.random.normal(> 100> ,> 20> ,> 200> )> fig> => plt.figure(figsize> => (> 10> ,> 7> ))> # Creating plot> plt.boxplot(data)> # show plot> plt.show()> |
산출:
상자 그림 사용자 정의
matplotlib.pyplot.boxplot()은 상자 그림에 무한한 사용자 정의 가능성을 제공합니다. notch = True 속성은 상자 그림에 노치 형식을 생성하고, patch_artist = True는 상자 그림을 색상으로 채우며, 다른 상자에 다른 색상을 설정할 수 있습니다. vert = 0 속성은 수평 상자 그림을 만듭니다. 레이블은 숫자 데이터 세트와 동일한 차원을 사용합니다.
예시 1:
파이썬3
# Import libraries> import> matplotlib.pyplot as plt> import> numpy as np> # Creating dataset> np.random.seed(> 10> )> data_1> => np.random.normal(> 100> ,> 10> ,> 200> )> data_2> => np.random.normal(> 90> ,> 20> ,> 200> )> data_3> => np.random.normal(> 80> ,> 30> ,> 200> )> data_4> => np.random.normal(> 70> ,> 40> ,> 200> )> data> => [data_1, data_2, data_3, data_4]> fig> => plt.figure(figsize> => (> 10> ,> 7> ))> # Creating axes instance> ax> => fig.add_axes([> 0> ,> 0> ,> 1> ,> 1> ])> # Creating plot> bp> => ax.boxplot(data)> # show plot> plt.show()> |
산출:
예시 2: 일부 사용자 정의를 사용하여 위 플롯을 수정해 보겠습니다.
파이썬3
# Import libraries> import> matplotlib.pyplot as plt> import> numpy as np> # Creating dataset> np.random.seed(> 10> )> data_1> => np.random.normal(> 100> ,> 10> ,> 200> )> data_2> => np.random.normal(> 90> ,> 20> ,> 200> )> data_3> => np.random.normal(> 80> ,> 30> ,> 200> )> data_4> => np.random.normal(> 70> ,> 40> ,> 200> )> data> => [data_1, data_2, data_3, data_4]> fig> => plt.figure(figsize> => (> 10> ,> 7> ))> ax> => fig.add_subplot(> 111> )> # Creating axes instance> bp> => ax.boxplot(data, patch_artist> => True> ,> > notch> => 'True'> , vert> => 0> )> colors> => [> '#0000FF'> ,> '#00FF00'> ,> > '#FFFF00'> ,> '#FF00FF'> ]> for> patch, color> in> zip> (bp[> 'boxes'> ], colors):> > patch.set_facecolor(color)> # changing color and linewidth of> # whiskers> for> whisker> in> bp[> 'whiskers'> ]:> > whisker.> set> (color> => '#8B008B'> ,> > linewidth> => 1.5> ,> > linestyle> => ':'> )> # changing color and linewidth of> # caps> for> cap> in> bp[> 'caps'> ]:> > cap.> set> (color> => '#8B008B'> ,> > linewidth> => 2> )> # changing color and linewidth of> # medians> for> median> in> bp[> 'medians'> ]:> > median.> set> (color> => 'red'> ,> > linewidth> => 3> )> # changing style of fliers> for> flier> in> bp[> 'fliers'> ]:> > flier.> set> (marker> => 'D'> ,> > color> => '#e7298a'> ,> > alpha> => 0.5> )> > # x-axis labels> ax.set_yticklabels([> 'data_1'> ,> 'data_2'> ,> > 'data_3'> ,> 'data_4'> ])> # Adding title> plt.title(> 'Customized box plot'> )> # Removing top axes and right axes> # ticks> ax.get_xaxis().tick_bottom()> ax.get_yaxis().tick_left()> > # show plot> plt.show()> |
산출: