Bee swarm plots?

I'd like to make some beeswarm plots that overlay dense data so that the distribution is easily inferred.  Each vertical cluster of points has the same x value so it is impossible to see the density of measurements

I made a small function to randomly jitter the data's x-coordinates, which helps a little but I'd like to try something like a beeswarm plot.

 

I know violin plots and box plots are built in to Igor... is there a way to leverage that package to do this?  I haven't dissected the source code but would appreciate any insight.

function noisify(input,magnitude)
 
// Adds noise to the x values.  magnitude <0 only adds positive values.
    wave input //x values to be noised
    variable magnitude
    int sgn=0
    if(magnitude<0)
        input+=sgn*enoise(magnitude)
    elseif(magnitude>0)
        input+=abs(enoise(magnitude))
    else
    endif
end

screenshots seem to have broken.  Files attached here.

[1] https://stackoverflow.com/questions/63138870/jitter-according-to-density

 

Plot without dither (53.06 KB) Plot with dither (60.36 KB) Beeswarm plots on violin plots [1] (188.9 KB)

The Violin and Box Plot capability in Igor does this. AFAIK there are two other options to do something like `geom_beeswarm` (or my preferred `geom_sina` from `{ggforce}` in R) in Igor.

1. The package scatter dot plot Windows > New > Packages > Scatter Dot Plot provides the capability to jitter points by density. This package was somewhat superseded by the in-built violin and box plot capability.

2. I wrote something to make SuperPlot style plots in Igor, which does something close to what you want. It's meant for categories on the x-axis but could be adapted for your needs. https://github.com/quantixed/SuperPlot It might be easier to look at this code and take what you need rather than pick through the in-built Igor code. 

The approach you mention gives an effect similar to `geom_jitter` but is unaware of point density.