That is what StatsPlots
’s boxplot()
does.
From your description, the data may need some pre-conditioning, for example:
using StatsPlots, DataFrames
X = 0:2.5:10
n = length(X)
Y = [rand(-3:3, 10) for _ in 1:n]
X2 = [fill(x,length(y)) for (x,y) in zip(X,Y)]
df = DataFrame(X = X2, Y = Y)
@df df boxplot(:X, :Y, legend=false)