Graphs are a fundamental data structure, used in many fields of human knowledge work. We read, use, and categorize information through graphs in daily tasks: every time we read a map of public transportation, every time we create a mental map of a concept, every time we send and receive packets through the internet, we are using graphs.Given how widespread graphs are, it is fundamental that we visualize them effectively. Drawings of graphs should strive to respect important readability criteria that were established in previous research. Examples of such criteria include reducing the number of crossings between edges and reducing edge length. Here, graph layout algorithms come into play: each layout algorithm maps nodes and edges in a graph to coordinates in space, allowing us to draw a graph while attempting to respect our previouslymentioned readability criteria. We encounter graphs with a wide variety of features and users with diverse use cases: layout algorithms must take into account this breadth of possible requirements, and specialize accordingly.This thesis focuses on layered graphs-graphs in which each node is assigned to a layer, nodes belonging to the same layer are drawn aligned to a linear axis, and the axes for multiple layers are drawn in parallel.The bulk of the novel contributions of this thesis are found in Stratisfimal Layout, which is an optimal layout algorithm for layered graphs-meaning that its output is one of the best attainable in terms of selected readability criteria. It does so by defining the layout algorithm as a linear programming problem.The other works in this thesis explore heuristic-based approaches to highlight trends and patterns in the underlying data, the application of layout algorithms to hypergraphs, and how the shape of the layout influences the understanding of features in the data.