From 534aefe3dc7a231f43399ca58a9b117d5d1bc372 Mon Sep 17 00:00:00 2001 From: Thomas Lin Pedersen Date: Mon, 22 Jan 2024 22:03:47 +0100 Subject: [PATCH] Add metro layout --- NAMESPACE | 2 + NEWS.md | 1 + R/layout_metro.R | 66 ++++++++++++++++++++ man/layout_tbl_graph_auto.Rd | 1 + man/layout_tbl_graph_backbone.Rd | 1 + man/layout_tbl_graph_cactustree.Rd | 1 + man/layout_tbl_graph_centrality.Rd | 1 + man/layout_tbl_graph_circlepack.Rd | 1 + man/layout_tbl_graph_dendrogram.Rd | 1 + man/layout_tbl_graph_eigen.Rd | 1 + man/layout_tbl_graph_fabric.Rd | 1 + man/layout_tbl_graph_focus.Rd | 1 + man/layout_tbl_graph_hive.Rd | 1 + man/layout_tbl_graph_htree.Rd | 1 + man/layout_tbl_graph_igraph.Rd | 1 + man/layout_tbl_graph_linear.Rd | 1 + man/layout_tbl_graph_manual.Rd | 1 + man/layout_tbl_graph_matrix.Rd | 1 + man/layout_tbl_graph_metro.Rd | 99 ++++++++++++++++++++++++++++++ man/layout_tbl_graph_partition.Rd | 1 + man/layout_tbl_graph_pmds.Rd | 1 + man/layout_tbl_graph_stress.Rd | 4 +- man/layout_tbl_graph_treemap.Rd | 1 + man/layout_tbl_graph_unrooted.Rd | 1 + 24 files changed, 190 insertions(+), 1 deletion(-) create mode 100644 R/layout_metro.R create mode 100644 man/layout_tbl_graph_metro.Rd diff --git a/NAMESPACE b/NAMESPACE index 118af1a5..efeee294 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -299,10 +299,12 @@ importFrom(ggforce,radial_trans) importFrom(ggrepel,GeomLabelRepel) importFrom(ggrepel,GeomTextRepel) importFrom(graphlayouts,layout_as_backbone) +importFrom(graphlayouts,layout_as_metromap) importFrom(graphlayouts,layout_with_centrality) importFrom(graphlayouts,layout_with_centrality_group) importFrom(graphlayouts,layout_with_constrained_stress) importFrom(graphlayouts,layout_with_eigen) +importFrom(graphlayouts,layout_with_fixed_coords) importFrom(graphlayouts,layout_with_focus) importFrom(graphlayouts,layout_with_focus_group) importFrom(graphlayouts,layout_with_pmds) diff --git a/NEWS.md b/NEWS.md index 748073dc..a813b496 100644 --- a/NEWS.md +++ b/NEWS.md @@ -30,6 +30,7 @@ * Added `geom_edge_bundle_force()`, `geom_edge_bundle_path()`, and `geom_edge_bundle_minimal()` (+ variants) to provide support for edge bundling (#267) +* Add "metro" layout from graphlayouts for metroline like layouts # ggraph 2.1.0 diff --git a/R/layout_metro.R b/R/layout_metro.R new file mode 100644 index 00000000..f13c8c2d --- /dev/null +++ b/R/layout_metro.R @@ -0,0 +1,66 @@ +#' Place nodes according to the standard design of metro maps +#' +#' This layouttries to optimise the placement of nodes so that they adhere to +#' the classic look of metro maps. As such it optimizes on the distribution of +#' incident edge angles, conformity of edge length, and edge angles in multiples +#' of 45 degrees. As it works as a refinement of an already existing layout +#' (the physical location of metro stations) it requires an a priori node +#' location. Due to it's purpose it probably works best with planar graphs. +#' +#' @param graph A tbl_graph object +#' @param x,y The start location of the nodes +#' @param length Desired multiple of grid point spacing. (`length * grid_space` +#' determines desired edge length) +#' @param grid_space The distance between consecitive grid points +#' @param optimization_weights The relative weight to be placed on the 5 +#' criteria during optimization as a numeric vector of length 4. The criteria +#' are: +#' * `Angular Resolution Criterion`: The angles of incident edges at each +#' station should be maximized, because if there is only a small angle between +#' any two adjacent edges, then it can become difficult to distinguish between +#' them. +#' * `Edge Length Criterion`: The edge lengths across the whole map should be +#' approximately equal to ensure regular spacing between stations. It is based +#' on the preferred multiple, l, of the grid spacing, g. The purpose of the +#' criterion is to penalize edges that are longer than or shorter than lg. +#' * `Balanced Edge Length Criterion`: The length of edges incident to a +#' particular station should be similar. +#' * `Line Straightness Criterion`: (not yet implemented) Edges that form part +#' of a line should, where possible, be co-linear either side of each station +#' that the line passes through. +#' * `Octiinearity Criterion`: Each edge should be drawn horizontally, +#' vertically, or diagonally at 45 degree, so we penalize edges that are not +#' at a desired angle. +#' If `NULL` all criteria are given equal weight. +#' @param max_movement Number of grid points a station can move away rom its +#' original position +#' @param circular ignored +#' +#' @return A data.frame with the columns `x`, `y`, `circular` as +#' well as any information stored as node variables in the tbl_graph object. +#' +#' @references +#' Stott, J., Rodgers, P., Martinez-Ovando, J. C., and Walker, S. G. (2011). +#' *Automatic metro map layout using multicriteria optimization* In IEEE Trans +#' Vis Comput Graph 17(1) pp. 101-114. https://doi.org/10.1109/tvcg.2010.24 +#' +#' @family layout_tbl_graph_* +#' +#' @author The underlying algorithm is implemented in the graphlayouts package +#' by David Schoch +#' +#' @importFrom graphlayouts layout_as_metromap +#' +layout_tbl_graph_metro <- function(graph, x, y, length = 2, grid_space = 0.0025, + optimization_weights = NULL, max_movement = 5, + circular = FALSE) { + x <- eval_tidy(enquo(x), .N()) + y <- eval_tidy(enquo(y), .N()) + if (is.null(x) || is.null(y)) { + cli::cli_abort("The metro layout must have a prior location of nodes to start with") + } + if (is.null(optimization_weights)) optimization_weights <- rep(1, 5) + xy <- layout_as_metromap(graph, xy = cbind(x, y), l = length, gr = grid_space, w = optimization_weights, bsize = max_movement) + nodes <- data_frame0(x = xy[,1], y = xy[,2], circular = FALSE) + combine_layout_nodes(nodes, as_tibble(graph, active = 'nodes')) +} diff --git a/man/layout_tbl_graph_auto.Rd b/man/layout_tbl_graph_auto.Rd index 5be31589..7318c2b5 100644 --- a/man/layout_tbl_graph_auto.Rd +++ b/man/layout_tbl_graph_auto.Rd @@ -45,6 +45,7 @@ Other layout_tbl_graph_*: \code{\link{layout_tbl_graph_linear}()}, \code{\link{layout_tbl_graph_manual}()}, \code{\link{layout_tbl_graph_matrix}()}, +\code{\link{layout_tbl_graph_metro}()}, \code{\link{layout_tbl_graph_partition}()}, \code{\link{layout_tbl_graph_pmds}()}, \code{\link{layout_tbl_graph_stress}()}, diff --git a/man/layout_tbl_graph_backbone.Rd b/man/layout_tbl_graph_backbone.Rd index dbe7e2ff..dd6b88eb 100644 --- a/man/layout_tbl_graph_backbone.Rd +++ b/man/layout_tbl_graph_backbone.Rd @@ -49,6 +49,7 @@ Other layout_tbl_graph_*: \code{\link{layout_tbl_graph_linear}()}, \code{\link{layout_tbl_graph_manual}()}, \code{\link{layout_tbl_graph_matrix}()}, +\code{\link{layout_tbl_graph_metro}()}, \code{\link{layout_tbl_graph_partition}()}, \code{\link{layout_tbl_graph_pmds}()}, \code{\link{layout_tbl_graph_stress}()}, diff --git a/man/layout_tbl_graph_cactustree.Rd b/man/layout_tbl_graph_cactustree.Rd index ca964ba1..8fb452ea 100644 --- a/man/layout_tbl_graph_cactustree.Rd +++ b/man/layout_tbl_graph_cactustree.Rd @@ -74,6 +74,7 @@ Other layout_tbl_graph_*: \code{\link{layout_tbl_graph_linear}()}, \code{\link{layout_tbl_graph_manual}()}, \code{\link{layout_tbl_graph_matrix}()}, +\code{\link{layout_tbl_graph_metro}()}, \code{\link{layout_tbl_graph_partition}()}, \code{\link{layout_tbl_graph_pmds}()}, \code{\link{layout_tbl_graph_stress}()}, diff --git a/man/layout_tbl_graph_centrality.Rd b/man/layout_tbl_graph_centrality.Rd index 3be1361c..743e43de 100644 --- a/man/layout_tbl_graph_centrality.Rd +++ b/man/layout_tbl_graph_centrality.Rd @@ -68,6 +68,7 @@ Other layout_tbl_graph_*: \code{\link{layout_tbl_graph_linear}()}, \code{\link{layout_tbl_graph_manual}()}, \code{\link{layout_tbl_graph_matrix}()}, +\code{\link{layout_tbl_graph_metro}()}, \code{\link{layout_tbl_graph_partition}()}, \code{\link{layout_tbl_graph_pmds}()}, \code{\link{layout_tbl_graph_stress}()}, diff --git a/man/layout_tbl_graph_circlepack.Rd b/man/layout_tbl_graph_circlepack.Rd index dfa09be7..9e80933e 100644 --- a/man/layout_tbl_graph_circlepack.Rd +++ b/man/layout_tbl_graph_circlepack.Rd @@ -79,6 +79,7 @@ Other layout_tbl_graph_*: \code{\link{layout_tbl_graph_linear}()}, \code{\link{layout_tbl_graph_manual}()}, \code{\link{layout_tbl_graph_matrix}()}, +\code{\link{layout_tbl_graph_metro}()}, \code{\link{layout_tbl_graph_partition}()}, \code{\link{layout_tbl_graph_pmds}()}, \code{\link{layout_tbl_graph_stress}()}, diff --git a/man/layout_tbl_graph_dendrogram.Rd b/man/layout_tbl_graph_dendrogram.Rd index 52b1e00d..80caa517 100644 --- a/man/layout_tbl_graph_dendrogram.Rd +++ b/man/layout_tbl_graph_dendrogram.Rd @@ -72,6 +72,7 @@ Other layout_tbl_graph_*: \code{\link{layout_tbl_graph_linear}()}, \code{\link{layout_tbl_graph_manual}()}, \code{\link{layout_tbl_graph_matrix}()}, +\code{\link{layout_tbl_graph_metro}()}, \code{\link{layout_tbl_graph_partition}()}, \code{\link{layout_tbl_graph_pmds}()}, \code{\link{layout_tbl_graph_stress}()}, diff --git a/man/layout_tbl_graph_eigen.Rd b/man/layout_tbl_graph_eigen.Rd index 024558df..447e20d9 100644 --- a/man/layout_tbl_graph_eigen.Rd +++ b/man/layout_tbl_graph_eigen.Rd @@ -47,6 +47,7 @@ Other layout_tbl_graph_*: \code{\link{layout_tbl_graph_linear}()}, \code{\link{layout_tbl_graph_manual}()}, \code{\link{layout_tbl_graph_matrix}()}, +\code{\link{layout_tbl_graph_metro}()}, \code{\link{layout_tbl_graph_partition}()}, \code{\link{layout_tbl_graph_pmds}()}, \code{\link{layout_tbl_graph_stress}()}, diff --git a/man/layout_tbl_graph_fabric.Rd b/man/layout_tbl_graph_fabric.Rd index b891b99b..d086796d 100644 --- a/man/layout_tbl_graph_fabric.Rd +++ b/man/layout_tbl_graph_fabric.Rd @@ -67,6 +67,7 @@ Other layout_tbl_graph_*: \code{\link{layout_tbl_graph_linear}()}, \code{\link{layout_tbl_graph_manual}()}, \code{\link{layout_tbl_graph_matrix}()}, +\code{\link{layout_tbl_graph_metro}()}, \code{\link{layout_tbl_graph_partition}()}, \code{\link{layout_tbl_graph_pmds}()}, \code{\link{layout_tbl_graph_stress}()}, diff --git a/man/layout_tbl_graph_focus.Rd b/man/layout_tbl_graph_focus.Rd index 9697ba3a..5d7e351f 100644 --- a/man/layout_tbl_graph_focus.Rd +++ b/man/layout_tbl_graph_focus.Rd @@ -65,6 +65,7 @@ Other layout_tbl_graph_*: \code{\link{layout_tbl_graph_linear}()}, \code{\link{layout_tbl_graph_manual}()}, \code{\link{layout_tbl_graph_matrix}()}, +\code{\link{layout_tbl_graph_metro}()}, \code{\link{layout_tbl_graph_partition}()}, \code{\link{layout_tbl_graph_pmds}()}, \code{\link{layout_tbl_graph_stress}()}, diff --git a/man/layout_tbl_graph_hive.Rd b/man/layout_tbl_graph_hive.Rd index f2b684df..709dbec1 100644 --- a/man/layout_tbl_graph_hive.Rd +++ b/man/layout_tbl_graph_hive.Rd @@ -108,6 +108,7 @@ Other layout_tbl_graph_*: \code{\link{layout_tbl_graph_linear}()}, \code{\link{layout_tbl_graph_manual}()}, \code{\link{layout_tbl_graph_matrix}()}, +\code{\link{layout_tbl_graph_metro}()}, \code{\link{layout_tbl_graph_partition}()}, \code{\link{layout_tbl_graph_pmds}()}, \code{\link{layout_tbl_graph_stress}()}, diff --git a/man/layout_tbl_graph_htree.Rd b/man/layout_tbl_graph_htree.Rd index b2f88544..7edcb537 100644 --- a/man/layout_tbl_graph_htree.Rd +++ b/man/layout_tbl_graph_htree.Rd @@ -54,6 +54,7 @@ Other layout_tbl_graph_*: \code{\link{layout_tbl_graph_linear}()}, \code{\link{layout_tbl_graph_manual}()}, \code{\link{layout_tbl_graph_matrix}()}, +\code{\link{layout_tbl_graph_metro}()}, \code{\link{layout_tbl_graph_partition}()}, \code{\link{layout_tbl_graph_pmds}()}, \code{\link{layout_tbl_graph_stress}()}, diff --git a/man/layout_tbl_graph_igraph.Rd b/man/layout_tbl_graph_igraph.Rd index 0eb79336..57e0767a 100644 --- a/man/layout_tbl_graph_igraph.Rd +++ b/man/layout_tbl_graph_igraph.Rd @@ -119,6 +119,7 @@ Other layout_tbl_graph_*: \code{\link{layout_tbl_graph_linear}()}, \code{\link{layout_tbl_graph_manual}()}, \code{\link{layout_tbl_graph_matrix}()}, +\code{\link{layout_tbl_graph_metro}()}, \code{\link{layout_tbl_graph_partition}()}, \code{\link{layout_tbl_graph_pmds}()}, \code{\link{layout_tbl_graph_stress}()}, diff --git a/man/layout_tbl_graph_linear.Rd b/man/layout_tbl_graph_linear.Rd index 20625c99..3d54d698 100644 --- a/man/layout_tbl_graph_linear.Rd +++ b/man/layout_tbl_graph_linear.Rd @@ -61,6 +61,7 @@ Other layout_tbl_graph_*: \code{\link{layout_tbl_graph_igraph}()}, \code{\link{layout_tbl_graph_manual}()}, \code{\link{layout_tbl_graph_matrix}()}, +\code{\link{layout_tbl_graph_metro}()}, \code{\link{layout_tbl_graph_partition}()}, \code{\link{layout_tbl_graph_pmds}()}, \code{\link{layout_tbl_graph_stress}()}, diff --git a/man/layout_tbl_graph_manual.Rd b/man/layout_tbl_graph_manual.Rd index 36e7e147..e50886da 100644 --- a/man/layout_tbl_graph_manual.Rd +++ b/man/layout_tbl_graph_manual.Rd @@ -37,6 +37,7 @@ Other layout_tbl_graph_*: \code{\link{layout_tbl_graph_igraph}()}, \code{\link{layout_tbl_graph_linear}()}, \code{\link{layout_tbl_graph_matrix}()}, +\code{\link{layout_tbl_graph_metro}()}, \code{\link{layout_tbl_graph_partition}()}, \code{\link{layout_tbl_graph_pmds}()}, \code{\link{layout_tbl_graph_stress}()}, diff --git a/man/layout_tbl_graph_matrix.Rd b/man/layout_tbl_graph_matrix.Rd index bc504b67..3e0c8d9d 100644 --- a/man/layout_tbl_graph_matrix.Rd +++ b/man/layout_tbl_graph_matrix.Rd @@ -49,6 +49,7 @@ Other layout_tbl_graph_*: \code{\link{layout_tbl_graph_igraph}()}, \code{\link{layout_tbl_graph_linear}()}, \code{\link{layout_tbl_graph_manual}()}, +\code{\link{layout_tbl_graph_metro}()}, \code{\link{layout_tbl_graph_partition}()}, \code{\link{layout_tbl_graph_pmds}()}, \code{\link{layout_tbl_graph_stress}()}, diff --git a/man/layout_tbl_graph_metro.Rd b/man/layout_tbl_graph_metro.Rd new file mode 100644 index 00000000..5fd345c4 --- /dev/null +++ b/man/layout_tbl_graph_metro.Rd @@ -0,0 +1,99 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/layout_metro.R +\name{layout_tbl_graph_metro} +\alias{layout_tbl_graph_metro} +\title{Place nodes according to the standard design of metro maps} +\usage{ +layout_tbl_graph_metro( + graph, + x, + y, + length = 2, + grid_space = 0.0025, + optimization_weights = NULL, + max_movement = 5 +) +} +\arguments{ +\item{graph}{A tbl_graph object} + +\item{x, y}{The start location of the nodes} + +\item{length}{Desired multiple of grid point spacing. (\code{length * grid_space} +determines desired edge length)} + +\item{grid_space}{The distance between consecitive grid points} + +\item{optimization_weights}{The relative weight to be placed on the 5 +criteria during optimization as a numeric vector of length 4. The criteria +are: +\itemize{ +\item \verb{Angular Resolution Criterion}: The angles of incident edges at each +station should be maximized, because if there is only a small angle between +any two adjacent edges, then it can become difficult to distinguish between +them. +\item \verb{Edge Length Criterion}: The edge lengths across the whole map should be +approximately equal to ensure regular spacing between stations. It is based +on the preferred multiple, l, of the grid spacing, g. The purpose of the +criterion is to penalize edges that are longer than or shorter than lg. +\item \verb{Balanced Edge Length Criterion}: The length of edges incident to a +particular station should be similar. +\item \verb{Line Straightness Criterion}: (not yet implemented) Edges that form part +of a line should, where possible, be co-linear either side of each station +that the line passes through. +\item \verb{Octiinearity Criterion}: Each edge should be drawn horizontally, +vertically, or diagonally at 45 degree, so we penalize edges that are not +at a desired angle. +If \code{NULL} all criteria are given equal weight. +}} + +\item{max_movement}{Number of grid points a station can move away rom its +original position} + +\item{circular}{ignored} +} +\value{ +A data.frame with the columns \code{x}, \code{y}, \code{circular} as +well as any information stored as node variables in the tbl_graph object. +} +\description{ +This layouttries to optimise the placement of nodes so that they adhere to +the classic look of metro maps. As such it optimizes on the distribution of +incident edge angles, conformity of edge length, and edge angles in multiples +of 45 degrees. As it works as a refinement of an already existing layout +(the physical location of metro stations) it requires an a priori node +location. Due to it's purpose it probably works best with planar graphs. +} +\references{ +Stott, J., Rodgers, P., Martinez-Ovando, J. C., and Walker, S. G. (2011). +\emph{Automatic metro map layout using multicriteria optimization} In IEEE Trans +Vis Comput Graph 17(1) pp. 101-114. https://doi.org/10.1109/tvcg.2010.24 +} +\seealso{ +Other layout_tbl_graph_*: +\code{\link{layout_tbl_graph_auto}()}, +\code{\link{layout_tbl_graph_backbone}()}, +\code{\link{layout_tbl_graph_cactustree}()}, +\code{\link{layout_tbl_graph_centrality}()}, +\code{\link{layout_tbl_graph_circlepack}()}, +\code{\link{layout_tbl_graph_dendrogram}()}, +\code{\link{layout_tbl_graph_eigen}()}, +\code{\link{layout_tbl_graph_fabric}()}, +\code{\link{layout_tbl_graph_focus}()}, +\code{\link{layout_tbl_graph_hive}()}, +\code{\link{layout_tbl_graph_htree}()}, +\code{\link{layout_tbl_graph_igraph}()}, +\code{\link{layout_tbl_graph_linear}()}, +\code{\link{layout_tbl_graph_manual}()}, +\code{\link{layout_tbl_graph_matrix}()}, +\code{\link{layout_tbl_graph_partition}()}, +\code{\link{layout_tbl_graph_pmds}()}, +\code{\link{layout_tbl_graph_stress}()}, +\code{\link{layout_tbl_graph_treemap}()}, +\code{\link{layout_tbl_graph_unrooted}()} +} +\author{ +The underlying algorithm is implemented in the graphlayouts package +by David Schoch +} +\concept{layout_tbl_graph_*} diff --git a/man/layout_tbl_graph_partition.Rd b/man/layout_tbl_graph_partition.Rd index 0b02493a..d2d5d617 100644 --- a/man/layout_tbl_graph_partition.Rd +++ b/man/layout_tbl_graph_partition.Rd @@ -88,6 +88,7 @@ Other layout_tbl_graph_*: \code{\link{layout_tbl_graph_linear}()}, \code{\link{layout_tbl_graph_manual}()}, \code{\link{layout_tbl_graph_matrix}()}, +\code{\link{layout_tbl_graph_metro}()}, \code{\link{layout_tbl_graph_pmds}()}, \code{\link{layout_tbl_graph_stress}()}, \code{\link{layout_tbl_graph_treemap}()}, diff --git a/man/layout_tbl_graph_pmds.Rd b/man/layout_tbl_graph_pmds.Rd index 8d019794..6b71a8d8 100644 --- a/man/layout_tbl_graph_pmds.Rd +++ b/man/layout_tbl_graph_pmds.Rd @@ -47,6 +47,7 @@ Other layout_tbl_graph_*: \code{\link{layout_tbl_graph_linear}()}, \code{\link{layout_tbl_graph_manual}()}, \code{\link{layout_tbl_graph_matrix}()}, +\code{\link{layout_tbl_graph_metro}()}, \code{\link{layout_tbl_graph_partition}()}, \code{\link{layout_tbl_graph_stress}()}, \code{\link{layout_tbl_graph_treemap}()}, diff --git a/man/layout_tbl_graph_stress.Rd b/man/layout_tbl_graph_stress.Rd index 5a84afcd..30fab9aa 100644 --- a/man/layout_tbl_graph_stress.Rd +++ b/man/layout_tbl_graph_stress.Rd @@ -41,7 +41,8 @@ weights for the layout. Currently ignored for the sparse version} placement of disconnected graphs.} \item{x_coord, y_coord}{Expressions evaluated on the node data giving -coordinates along x and/or y axis to fix nodes to.} +coordinates along x and/or y axis to fix nodes to. You can chose to only fix +selected nodes by leaving the remaining nodes with \code{NA} values.} \item{circular}{ignored} @@ -84,6 +85,7 @@ Other layout_tbl_graph_*: \code{\link{layout_tbl_graph_linear}()}, \code{\link{layout_tbl_graph_manual}()}, \code{\link{layout_tbl_graph_matrix}()}, +\code{\link{layout_tbl_graph_metro}()}, \code{\link{layout_tbl_graph_partition}()}, \code{\link{layout_tbl_graph_pmds}()}, \code{\link{layout_tbl_graph_treemap}()}, diff --git a/man/layout_tbl_graph_treemap.Rd b/man/layout_tbl_graph_treemap.Rd index d0aa94b6..ed0fbd26 100644 --- a/man/layout_tbl_graph_treemap.Rd +++ b/man/layout_tbl_graph_treemap.Rd @@ -101,6 +101,7 @@ Other layout_tbl_graph_*: \code{\link{layout_tbl_graph_linear}()}, \code{\link{layout_tbl_graph_manual}()}, \code{\link{layout_tbl_graph_matrix}()}, +\code{\link{layout_tbl_graph_metro}()}, \code{\link{layout_tbl_graph_partition}()}, \code{\link{layout_tbl_graph_pmds}()}, \code{\link{layout_tbl_graph_stress}()}, diff --git a/man/layout_tbl_graph_unrooted.Rd b/man/layout_tbl_graph_unrooted.Rd index 6fa2b9aa..18877aa0 100644 --- a/man/layout_tbl_graph_unrooted.Rd +++ b/man/layout_tbl_graph_unrooted.Rd @@ -74,6 +74,7 @@ Other layout_tbl_graph_*: \code{\link{layout_tbl_graph_linear}()}, \code{\link{layout_tbl_graph_manual}()}, \code{\link{layout_tbl_graph_matrix}()}, +\code{\link{layout_tbl_graph_metro}()}, \code{\link{layout_tbl_graph_partition}()}, \code{\link{layout_tbl_graph_pmds}()}, \code{\link{layout_tbl_graph_stress}()},