1. A computer-implemented method for drawing directed acyclic graphs, the method comprising: receiving, in a computing system comprising at least one computer processor, information representing a directed acyclic graph; providing the information to the at least one computer processor of the computing system: generating a layout of the directed acyclic graph utilizing the computing system, the layout comprised of one or more subgraphs, each subgraph comprising two or more nodes and edges that connect pairs of nodes, the nodes and edges being defined in x- and y-coordinates; reducing the number of edge crossings in the layout of the directed acyclic graph utilizing the computing system; straightening the edges of the layout of the directed acyclic graph utilizing the computing system, the straightening increasing a number of vertical edges in the directed acyclic graph; compacting the one or more subgraphs along x-coordinate axis to generate a compacted directed acyclic graph layout associated with a compacted directed acyclic graph utilizing the computing system; and assigning new y-coordinates to the nodes of the one or more subgraphs such that the nodes do not overlap in the y-coordinate to generate a new directed acyclic graph utilizing the computing system, wherein assigning new y-coordinates comprises: computing, for each level of a plurality of levels of the layout of the directed acyclic graph, a weight function that is the ratio of a square of incoming edges to the each level and a number of nodes at the each level; and adjusting vertical separation between adjacent levels of the plurality of levels in proportion with computed weight functions associated with the adjacent levels.