Biểu đồ boxplot trong python

1. khái niệm cơ bản :

Biểu đồ nén hiển thị tóm tắt tập hợp dữ liệu có chứa minimum, phần tư thứ nhất, trung vị, phần tư thứ ba và maximum. Một đường thẳng đứng đi qua hộp ở trung tuyến. Râu đi từ mỗi phần tư đến nhỏ nhất hoặc tối đa.

Biểu đồ boxplot trong python

Ta tiến hành tạo biểu đồ box. Ta sử dụng hàm numpy.random.normal () để tạo dữ liệu giả. Nó cần ba đối số, giá trị trung bình , độ lệch chuẩn của phân phối chuẩn và số lượng giá trị mong muốn.

np.random.seed(10)
collectn_1 = np.random.normal(100, 10, 200)
collectn_2 = np.random.normal(80, 30, 200)
collectn_3 = np.random.normal(90, 20, 200)
collectn_4 = np.random.normal(70, 25, 200)

Danh sách các mảng mà ta đã tạo ở trên là đầu vào bắt buộc duy nhất để tạo boxplot. Sử dụng đoạn code data_to_plot :

fig = plt.figure()
# Create an axes instance
ax = fig.add_axes([0,0,1,1])
# Create the boxplot
bp = ax.boxplot(data_to_plot)
plt.show()

Kết quả như sau :

Biểu đồ boxplot trong python

2. Ví dụ :

Các ví dụ cơ bản về biểu đồ nén :

import numpy as np
import matplotlib.pyplot as plt

# Fixing random state for reproducibility
np.random.seed(19680801)

# fake up some data
spread = np.random.rand(50) * 100
center = np.ones(25) * 50
flier_high = np.random.rand(10) * 100 + 100
flier_low = np.random.rand(10) * -100
data = np.concatenate((spread, center, flier_high, flier_low))

fig1, ax1 = plt.subplots()
ax1.set_title('Basic Plot')
ax1.boxplot(data)

Biểu đồ boxplot trong python

Kết quả :

{'whiskers': [, ], 'caps': [, ], 'boxes': [], 'medians': [], 'fliers': [], 'means': []}

fig2, ax2 = plt.subplots()
ax2.set_title('Notched boxes')
ax2.boxplot(data, notch=True)

Biểu đồ boxplot trong python

Kết quả : 

{'whiskers': [, ], 'caps': [, ], 'boxes': [], 'medians': [], 'fliers': [], 'means': []}

green_diamond = dict(markerfacecolor='g', marker='D')
fig3, ax3 = plt.subplots()
ax3.set_title('Changed Outlier Symbols')
ax3.boxplot(data, flierprops=green_diamond)

Biểu đồ boxplot trong python

Kết quả :

{'whiskers': [, ], 'caps': [, ], 'boxes': [], 'medians': [], 'fliers': [], 'means': []}

fig4, ax4 = plt.subplots()
ax4.set_title('Hide Outlier Points')
ax4.boxplot(data, showfliers=False)

Biểu đồ boxplot trong python

Kết quả :

{'whiskers': [, ], 'caps': [, ], 'boxes': [], 'medians': [], 'fliers': [], 'means': []}

red_square = dict(markerfacecolor='r', marker='s')
fig5, ax5 = plt.subplots()
ax5.set_title('Horizontal Boxes')
ax5.boxplot(data, vert=False, flierprops=red_square)

Biểu đồ boxplot trong python

Kết quả :

{'whiskers': [, ], 'caps': [, ], 'boxes': [], 'medians': [], 'fliers': [], 'means': []}

fig6, ax6 = plt.subplots()
ax6.set_title('Shorter Whisker Length')
ax6.boxplot(data, flierprops=red_square, vert=False, whis=0.75)

Biểu đồ boxplot trong python

Kết quả :

{'whiskers': [, ], 'caps': [, ], 'boxes': [], 'medians': [], 'fliers': [], 'means': []}

Ta tiến hành tạo thêm dữ liệu giả :

spread = np.random.rand(50) * 100
center = np.ones(25) * 40
flier_high = np.random.rand(10) * 100 + 100
flier_low = np.random.rand(10) * -100
d2 = np.concatenate((spread, center, flier_high, flier_low))
data.shape = (-1, 1)
d2.shape = (-1, 1)

Tạo mảng 2-D chỉ hoạt động nếu tất cả các cột có cùng độ dài. Nếu không, hãy sử dụng một danh sách để thay thế. Điều này thực sự hiệu quả hơn vì dù sao thì boxplot cũng chuyển đổi mảng 2-D thành danh sách các vectơ bên trong.

data = [data, d2, d2[::2,0]]
fig7, ax7 = plt.subplots()
ax7.set_title('Multiple Samples with Different sizes')
ax7.boxplot(data)

plt.show()

Biểu đồ boxplot trong python