박스플롯 서랍 기능 #

이 예는 미리 계산된 상자 그림 통계를 상자 그림 서랍에 전달하는 방법을 보여줍니다. 첫 번째 그림은 개별 구성 요소를 제거하고 추가하는 방법을 보여줍니다(평균은 기본적으로 표시되지 않는 유일한 값입니다). 두 번째 그림은 아티스트의 스타일을 사용자 정의할 수 있는 방법을 보여줍니다.

boxplots 및 그 역사에 대한 좋은 일반 참조는 여기에서 찾을 수 있습니다: http://vita.had.co.nz/papers/boxplots.pdf

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cbook as cbook

# fake data
np.random.seed(19680801)
data = np.random.lognormal(size=(37, 4), mean=1.5, sigma=1.75)
labels = list('ABCD')

# compute the boxplot stats
stats = cbook.boxplot_stats(data, labels=labels, bootstrap=10000)

통계를 계산한 후에는 무엇이든 검토하고 변경할 수 있습니다. 그것을 증명하기 위해 각 세트의 중앙값을 모든 데이터의 중앙값으로 설정하고 평균을 두 배로 하겠습니다.

for n in range(len(stats)):
    stats[n]['med'] = np.median(data)
    stats[n]['mean'] *= 2

print(list(stats[0]))

fs = 10  # fontsize
['label', 'mean', 'iqr', 'cilo', 'cihi', 'whishi', 'whislo', 'fliers', 'q1', 'med', 'q3']

다른 요소의 표시를 전환하는 방법을 시연합니다.

fig, axs = plt.subplots(nrows=2, ncols=3, figsize=(6, 6), sharey=True)
axs[0, 0].bxp(stats)
axs[0, 0].set_title('Default', fontsize=fs)

axs[0, 1].bxp(stats, showmeans=True)
axs[0, 1].set_title('showmeans=True', fontsize=fs)

axs[0, 2].bxp(stats, showmeans=True, meanline=True)
axs[0, 2].set_title('showmeans=True,\nmeanline=True', fontsize=fs)

axs[1, 0].bxp(stats, showbox=False, showcaps=False)
tufte_title = 'Tufte Style\n(showbox=False,\nshowcaps=False)'
axs[1, 0].set_title(tufte_title, fontsize=fs)

axs[1, 1].bxp(stats, shownotches=True)
axs[1, 1].set_title('notch=True', fontsize=fs)

axs[1, 2].bxp(stats, showfliers=False)
axs[1, 2].set_title('showfliers=False', fontsize=fs)

for ax in axs.flat:
    ax.set_yscale('log')
    ax.set_yticklabels([])

fig.subplots_adjust(hspace=0.4)
plt.show()
기본값, showmeans=True, showmeans=True, meanline=True, Tufte 스타일(showbox=False, showcaps=False), notch=True, showfliers=False

다양한 요소 표시를 맞춤설정하는 방법을 시연합니다.

boxprops = dict(linestyle='--', linewidth=3, color='darkgoldenrod')
flierprops = dict(marker='o', markerfacecolor='green', markersize=12,
                  linestyle='none')
medianprops = dict(linestyle='-.', linewidth=2.5, color='firebrick')
meanpointprops = dict(marker='D', markeredgecolor='black',
                      markerfacecolor='firebrick')
meanlineprops = dict(linestyle='--', linewidth=2.5, color='purple')

fig, axs = plt.subplots(nrows=2, ncols=2, figsize=(6, 6), sharey=True)
axs[0, 0].bxp(stats, boxprops=boxprops)
axs[0, 0].set_title('Custom boxprops', fontsize=fs)

axs[0, 1].bxp(stats, flierprops=flierprops, medianprops=medianprops)
axs[0, 1].set_title('Custom medianprops\nand flierprops', fontsize=fs)

axs[1, 0].bxp(stats, meanprops=meanpointprops, meanline=False,
              showmeans=True)
axs[1, 0].set_title('Custom mean\nas point', fontsize=fs)

axs[1, 1].bxp(stats, meanprops=meanlineprops, meanline=True,
              showmeans=True)
axs[1, 1].set_title('Custom mean\nas line', fontsize=fs)

for ax in axs.flat:
    ax.set_yscale('log')
    ax.set_yticklabels([])

fig.suptitle("I never said they'd be pretty")
fig.subplots_adjust(hspace=0.4)
plt.show()
예쁘다고 한 적 없어, Custom boxprops, Custom medianprops and flierprops, Custom mean as point, Custom mean as line

참조

다음 함수, 메서드, 클래스 및 모듈의 사용이 이 예제에 표시됩니다.

스크립트의 총 실행 시간: ( 0분 2.236초)

Sphinx-Gallery에서 생성한 갤러리