I made a graph that has a given number at each vertex:

I want to place vertex 1 above vertex 2 if value of vertex 1 is larger than of vertex 2. And also, vertices with same value should be located on the same horizontal line.
Above graph satisfies the condition. (I think because of luck.)
But, another graph constructed by the same function does not satisfy it:

Here 5 is not above 2.
How can I implement this condition?
(The height of the gap between 2 and 5 does not need to be exactly 3 times the height gap between 1 and 2.)
==== Editted ====
Here is the code for function makes the graph. (I simplified it.)
LatticeGraph[group_] :=
Module[{subgroup = (*omitted*), nodes, edges, list},
nodes = Table[Property[Labeled[i, Placed[subgroup[[i]], Center]],(*VertexStyle Omitted*)], {i, 1, Length[subgroup]}];
list = {(*Omitted and it's used for generate edges*)}
edges = {(*Omitted and it was just the list of v1->v2*)};
Graph[nodes, edges, VertexSize -> Large,EdgeShapeFunction -> GraphElementData["Line"], ImagePadding -> 20]]





subgroup,listetc who produced the secondGraphat least. – Öskå Aug 07 '14 at 10:46