Một cách để tiếp cận vấn đề là để suy nghĩ của mỗi 'hàng' trong phân tán/dot âm mưu của bạn/beeswarm như một thùng trong một biểu đồ:
data = np.random.randn(100)
width = 0.8 # the maximum width of each 'row' in the scatter plot
xpos = 0 # the centre position of the scatter plot in x
counts, edges = np.histogram(data, bins=20)
centres = (edges[:-1] + edges[1:])/2.
yvals = centres.repeat(counts)
max_offset = width/counts.max()
offsets = np.hstack((np.arange(cc) - 0.5 * (cc - 1)) for cc in counts)
xvals = xpos + (offsets * max_offset)
fig, ax = plt.subplots(1, 1)
ax.scatter(xvals, yvals, s=30, c='b')
Điều này rõ ràng liên quan đến binning dữ liệu, vì vậy bạn có thể mất một số độ chính xác.Nếu bạn có dữ liệu rời rạc, bạn có thể thay thế:
counts, edges = np.histogram(data, bins=20)
centres = (edges[:-1] + edges[1:])/2.
với:
centres, counts = np.unique(data, return_counts=True)
Một phương pháp khác mà giữ gìn chính xác tọa độ y, ngay cả đối với dữ liệu liên tục, là sử dụng một kernel density estimate để mở rộng biên độ của jitter ngẫu nhiên trong trục x:
from scipy.stats import gaussian_kde
kde = gaussian_kde(data)
density = kde(data) # estimate the local density at each datapoint
# generate some random jitter between 0 and 1
jitter = np.random.rand(*data.shape) - 0.5
# scale the jitter by the KDE estimate and add it to the centre x-coordinate
xvals = 1 + (density * jitter * width * 2)
ax.scatter(xvals, data, s=30, c='g')
for sp in ['top', 'bottom', 'right']:
ax.spines[sp].set_visible(False)
ax.tick_params(top=False, bottom=False, right=False)
ax.set_xticks([0, 1])
ax.set_xticklabels(['Histogram', 'KDE'], fontsize='x-large')
fig.tight_layout()
Lần gặp gỡ thứ hai này hod dựa trên cách hoạt động của violin plots. Nó vẫn không thể đảm bảo rằng không có điểm nào trùng nhau, nhưng tôi thấy rằng trong thực tế nó có xu hướng cho kết quả khá đẹp, miễn là có một số điểm phong nha (> 20), và phân phối có thể được xấp xỉ một cách hợp lý bởi một tổng hợp Gaussians.

Trong một [dot cốt truyện] (http://en.wikipedia.org/wiki/Dot_plot_ (thống kê)) những điểm này đã được tách ra trong cột của chúng – joaquin
Định nghĩa wiki của "dấu chấm" không phải là những gì tôi đang cố gắng mô tả, nhưng tôi chưa bao giờ nghe về một thuật ngữ khác ngoài "dấu chấm" cho nó. Đó là khoảng một âm mưu phân tán nhưng với các nhãn x tùy ý (không nhất thiết là số). Vì vậy, trong ví dụ tôi mô tả trong câu hỏi, sẽ có một cột giá trị cho "CategoryA", cột thứ hai cho "CategoryB", v.v. (_Edit_: Định nghĩa wikipedia của "Cleveland dot plot" là tương tự như những gì tôi đang tìm kiếm, mặc dù vẫn không chính xác như nhau.) – iayork