Biểu đồ hộp Matplotlib là một công cụ mạnh mẽ để trực quan hóa sự phân bố của dữ liệu một cách ngắn gọn và thông tin. Bài viết này sẽ đi sâu vào thế giới của biểu đồ hộp sử dụng matplotlib, khám phá nhiều khía cạnh của việc tạo ra, tùy chỉnh và diễn giải những hình ảnh trực quan đa năng này. Dù bạn là một nhà khoa học dữ liệu, nhà nghiên cứu hay nhà phân tích, việc thành thạo biểu đồ hộp matplotlib sẽ nâng cao khả năng của bạn trong việc truyền đạt hiệu quả các phân bố dữ liệu phức tạp.
Biểu đồ hộp Matplotlib Bài viết được khuyến nghị
Hiểu Biết Cơ Bản Về Biểu Đồ Hộp Matplotlib
Biểu đồ hộp Matplotlib là một hàm trong thư viện matplotlib tạo ra các biểu đồ hộp và râu. Các biểu đồ này rất tốt để hiển thị phân phối dữ liệu, cho thấy các chỉ số thống kê chính như trung vị, tứ phân và các điểm ngoại lai tiềm năng. Hãy bắt đầu với một ví dụ đơn giản để minh họa cách sử dụng cơ bản của biểu đồ hộp matplotlib:
import matplotlib.pyplot as plt
import numpy as np
# Tạo dữ liệu mẫu
data = np.random.randn(100)
# Tạo biểu đồ hộp
plt.figure(figsize=(8, 6))
plt.boxplot(data)
plt.title('Biểu đồ hộp Matplotlib cơ bản - how2matplotlib.com')
plt.ylabel('Giá trị')
plt.show()
Kết quả:
Trong ví dụ này, chúng tôi tạo ra dữ liệu ngẫu nhiên và tạo một biểu đồ hộp cơ bản bằng cách sử dụng matplotlib boxplot. Biểu đồ kết quả cho thấy giá trị trung vị (đường trung tâm), khoảng tứ phân (hộp), và các râu kéo dài đến giá trị tối thiểu và tối đa trong khoảng 1.5 lần khoảng tứ phân.
Tùy chỉnh giao diện Boxplot của Matplotlib
Biểu đồ hộp Matplotlib cung cấp nhiều tùy chọn để tùy chỉnh diện mạo của các biểu đồ hộp của bạn. Bạn có thể điều chỉnh màu sắc, kiểu đường và các yếu tố hình ảnh khác để tạo ra những hình ảnh trực quan hấp dẫn và thông tin hơn. Dưới đây là một ví dụ minh họa một số tùy chọn tùy chỉnh:
import matplotlib.pyplot as plt
import numpy as np # Tạo dữ liệu mẫu
data = [np.random.normal(0, std, 100) for std in range(1, 4)] # Tạo biểu đồ hộp tùy chỉnh
fig, ax = plt.subplots(figsize=(10, 6))
bp = ax.boxplot(data, patch_artist=True)
# Tùy chỉnh màu sắc
colors = ['lightblue', 'lightgreen', 'lightpink']
for patch, color in zip(bp['boxes'], colors):
patch.set_facecolor(color)
# Tùy chỉnh các phần tử khác
plt.title('Biểu đồ hộp Matplotlib tùy chỉnh - how2matplotlib.com')
plt.xlabel('Nhóm')
plt.ylabel('Giá trị')
ax.set_xticklabels(['Nhóm A', 'Nhóm B', 'Nhóm C'])
plt.show()
Kết quả:
Ví dụ này minh họa cách tùy chỉnh màu nền của các hộp, đặt nhãn cho trục x và điều chỉnh các yếu tố hình ảnh khác của biểu đồ hộp matplotlib.
Tạo nhiều biểu đồ hộp với Matplotlib
Biểu đồ hộp Matplotlib cho phép bạn tạo nhiều biểu đồ hộp cạnh nhau, điều này rất hữu ích để so sánh phân phối giữa các danh mục hoặc nhóm khác nhau. Dưới đây là một ví dụ về cách tạo nhiều biểu đồ hộp:
import matplotlib.pyplot as plt
import numpy as np
# Tạo dữ liệu mẫu cho nhiều nhóm
data = [np.random.normal(0, std, 100) for std in range(1, 5)]
# Tạo nhiều biểu đồ hộp
plt.figure(figsize=(12, 6))
plt.boxplot(data)
plt.title('Nhiều biểu đồ hộp với Matplotlib - how2matplotlib.com')
plt.xlabel('Nhóm')
plt.ylabel('Giá trị')
plt.xticks([1, 2, 3, 4], ['A', 'B', 'C', 'D'])
plt.show()
Kết quả:
Ví dụ này tạo ra bốn biểu đồ hộp cạnh nhau, cho phép so sánh dễ dàng các phân phối giữa các nhóm khác nhau.
Thêm các vết khía vào biểu đồ hộp Matplotlib
Các rãnh trong biểu đồ hộp có thể cung cấp một tín hiệu trực quan để so sánh các giá trị trung vị giữa các nhóm khác nhau. Biểu đồ hộp Matplotlib hỗ trợ việc thêm rãnh vào các biểu đồ của bạn. Dưới đây là cách bạn có thể tạo một biểu đồ hộp với các rãnh:
import matplotlib.pyplot as plt
import numpy as np
# Tạo dữ liệu mẫu
data = [np.random.normal(0, std, 100) for std in range(1, 4)]
# Tạo một biểu đồ hộp với các rãnh
plt.figure(figsize=(10, 6))
plt.boxplot(data, notch=True)
plt.title('Matplotlib Boxplot với các rãnh - how2matplotlib.com')
plt.xlabel('Nhóm')
plt.ylabel('Giá trị')
plt.xticks([1, 2, 3], ['A', 'B', 'C'])
plt.show()
Kết quả:
Trong ví dụ này, chúng tôi đặt notch=True
trong hàm boxplot của matplotlib để thêm các rãnh vào các hộp. Các rãnh này đại diện cho khoảng tin cậy xung quanh trung vị.
Xử lý các giá trị ngoại lai trong biểu đồ hộp Matplotlib
Các điểm ngoại lai là một khía cạnh quan trọng của phân phối dữ liệu, và matplotlib boxplot cung cấp các tùy chọn để xử lý và hiển thị các điểm ngoại lai. Dưới đây là một ví dụ minh họa các cách khác nhau để xử lý các điểm ngoại lai:
import matplotlib.pyplot as plt
import numpy as np # Tạo dữ liệu mẫu với các điểm ngoại lai
np.random.seed(42)
data = np.random.normal(100, 20, 200)
outliers = np.random.uniform(50, 150, 10)
data = np.concatenate([data, outliers]) # Tạo biểu đồ hộp với các kiểu điểm ngoại lai khác nhau
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 6))
# Kiểu ngoại lệ mặc định
ax1.boxplot(data)
ax1.set_title('Ngoại lệ mặc định - how2matplotlib.com')
# Kiểu ngoại lệ tùy chỉnh
ax2.boxplot(data, flierprops={'marker': 'o', 'markerfacecolor': 'red', 'markersize': 8})
ax2.set_title('Ngoại lệ tùy chỉnh - how2matplotlib.com')
plt.tight_layout()
plt.show()
Kết quả:
Ví dụ này cho thấy hai biểu đồ hộp: một với kiểu ngoại lệ mặc định và một với các dấu hiệu ngoại lệ tùy chỉnh. Bạn có thể điều chỉnh diện mạo của các ngoại lệ bằng cách sử dụng tham số flierprops
trong matplotlib boxplot.
Tạo biểu đồ hộp ngang với Matplotlib
Trong khi biểu đồ hộp dọc là phổ biến, matplotlib boxplot cũng hỗ trợ tạo biểu đồ hộp ngang. Những biểu đồ này có thể hữu ích khi xử lý các tên danh mục dài hoặc khi bạn muốn nhấn mạnh sự phân phối dọc theo trục x. Dưới đây là cách tạo một biểu đồ hộp ngang:
import matplotlib.pyplot as plt
import numpy as np
# Tạo dữ liệu mẫu
data = [np.random.normal(0, std, 100) for std in range(1, 5)]
# Tạo một biểu đồ hộp ngang
plt.figure(figsize=(10, 6))
plt.boxplot(data, vert=False)
plt.title('Biểu đồ hộp ngang Matplotlib - how2matplotlib.com')
plt.xlabel('Giá trị')
plt.ylabel('Nhóm')
plt.yticks([1, 2, 3, 4], ['A', 'B', 'C', 'D'])
plt.show()
Kết quả:
Trong ví dụ này, chúng tôi đặt vert=False
trong hàm boxplot của matplotlib để tạo ra một biểu đồ hộp nằm ngang. Lưu ý rằng chúng tôi cũng đã hoán đổi nhãn x và y để phản ánh sự thay đổi trong định hướng.
Thêm các Điểm Rung Rinh vào Biểu Đồ Hộp Matplotlib
Để cung cấp thêm cái nhìn sâu sắc về phân phối dữ liệu cơ bản, bạn có thể thêm các điểm jittered vào boxplot matplotlib của bạn. Kỹ thuật này đặc biệt hữu ích cho các tập dữ liệu nhỏ hơn. Dưới đây là một ví dụ về cách thêm các điểm jittered vào một box plot:
import matplotlib.pyplot as plt
import numpy as np # Tạo dữ liệu mẫu
np.random.seed(42)
data = [np.random.normal(0, std, 30) for std in range(1, 4)] # Tạo biểu đồ hộp với các điểm bị rối
fig, ax = plt.subplots(figsize=(10, 6))
bp = ax.boxplot(data)
colors = ['xanh dương', 'xanh lá', 'đỏ']
cho i, d trong enumerate(data):
y = d
x = np.random.normal(i+1, 0.04, len(y))
ax.scatter(x, y, c=colors[i], alpha=0.4
plt.title('Biểu đồ Boxplot Matplotlib với các điểm Jittered - how2matplotlib.com')
plt.xlabel('Nhóm')
plt.ylabel('Giá trị')
ax.set_xticklabels(['A', 'B', 'C'])
plt.show()
Kết quả:
Ví dụ này thêm các điểm jittered vào mỗi hộp trong biểu đồ, cung cấp cái nhìn chi tiết hơn về phân phối dữ liệu trong mỗi nhóm.
Tạo biểu đồ Violin với Matplotlib
Mặc dù không hoàn toàn là biểu đồ hộp, biểu đồ đàn vĩ cầm có liên quan chặt chẽ và có thể được tạo ra bằng cách sử dụng matplotlib. Biểu đồ đàn vĩ cầm kết hợp các khía cạnh của biểu đồ hộp và ước lượng mật độ hạt nhân. Dưới đây là cách tạo một biểu đồ đàn vĩ cầm bằng cách sử dụng matplotlib:
import matplotlib.pyplot as plt
import numpy as np
# Tạo dữ liệu mẫu
np.random.seed(10)
data = [np.random.normal(0, std, 100) for std in range(1, 5)]