I'd like to write a program to draw a graph taking as an input the size of the layers and the edges of the graph. e.g. For edges={} and Layers={3,3,5,1} I'd expect something like this
I've used this code to generate the plot but (i) of course I'm just using the 'trick' of coloring the edges the same as the background just to put the vertices where I want them - which it's computationally expensive to do, especially for bigger numbers of vertices, and (ii) I don't really know how to specify the edges now.
Layers = {3, 3, 5, 1} // Sort[#, Greater] &;
Graph[CompleteGraph[Total[Layers], EdgeStyle -> White], VertexSize -> Large, GraphLayout -> {"MultipartiteEmbedding", "VertexPartition" -> Layers}]
Then, my question reduces to: (i) Is there a better way to force the size of the layers, and (ii) how to specify the edges within this new layout.