Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Cách tránh chồng chéo điểm trong categorical scatter plot không dùng jitter trong Python Seaborn

stripplot dùng jitter (nhiễu ngẫu nhiên) để tách điểm, nhưng vẫn có thể chồng chéo. Swarmplot sắp xếp điểm theo thuật toán "bee swarm" đảm bảo **không chồng chéo** mà không cần jitter.

Ví dụ swarmplot trên dataset Iris


import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt

my_df = sb.load_dataset('iris')
sb.swarmplot(x="species", y="petal_length", data=my_df)
plt.show()

Giải thích

  • Mỗi điểm = một quan sát, vị trí y = giá trị thực, vị trí x = sắp xếp để không chồng chéo.
  • Thấy rõ toàn bộ phân bố, mật độ, outlier, gaps.
  • Phù hợp dữ liệu nhỏ-vừa (< ~300 điểm/nhóm).

So sánh stripplot vs swarmplot

Tiêu chístripplot + jitterswarmplot
Chồng chéoCó thể vẫn chồngKhông bao giờ chồng
Độ chính xác vị trí xGần đúng (có nhiễu)Chính xác (tối ưu)
Hiệu năngO(n) - nhanhO(n²) - chậm
Dữ liệu lớnOKKhông khuyến khích

Khuyến nghị

Dữ liệu nhỏ → swarmplot đẹp, chính xác. Dữ liệu lớn → stripplot(jitter=True, alpha=0.5) hoặc violinplot/boxplot.