 <p>Here is a very basic attempt in Python:</p> <pre><code>import pylab as pl data = pl.array([[1,2],[2,3],[1,3],[2,1],[5,3],[3,2],[3,2],[1,1]]) first = data[:,0] second = data[:,1] xs = [] ys = [] for r in data: ys += list(r) ys.append(None) xs += [1.3,1.7] xs.append(None) pl.plot([1.3]*len(first),first,'o',[1.7]*len(second),second,'o',xs,ys) pl.boxplot(data) pl.ylim([min(min(first),min(second))-.5,max(max(first),max(second))+.5]) labels = ("first", "second") pl.xticks([1,2],labels) pl.show() </code></pre> <p>will result in: <img src="https://i.stack.imgur.com/igpyG.png" alt="enter image description here"></p>