It is important to understand that this violin plot is made using a kernel density estimate, not with the d3.histogram() function.
Here, the highest value of the density function is computed. This value will as wide as 100% of the bandwidth. So you just have to play with the padding argument of the x axis to control space between violin.
Note: With this method, a group with less values than another will have a smaller width.