% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/GraphPlot.R
\name{GraphPlot}
\alias{GraphPlot}
\title{Graph Plot}
\usage{
GraphPlot(
  node,
  edge,
  transition = NULL,
  node_coord = c("x", "y"),
  node_group = NULL,
  node_palette = "Chinese",
  node_palcolor = NULL,
  node_size = 4,
  node_alpha = 1,
  node_highlight = NULL,
  node_highlight_color = "red",
  label = FALSE,
  label.size = 3.5,
  label.fg = "white",
  label.bg = "black",
  label.bg.r = 0.1,
  label_insitu = FALSE,
  label_repel = FALSE,
  label_repulsion = 20,
  label_point_size = 1,
  label_point_color = "black",
  label_segment_color = "black",
  edge_threshold = 0.01,
  use_triangular = c("upper", "lower", "both"),
  edge_line = c("straight", "curved"),
  edge_line_curvature = 0.3,
  edge_line_angle = 90,
  edge_color = "grey30",
  edge_size = c(0.2, 1),
  edge_alpha = 0.5,
  edge_shorten = 0,
  edge_offset = 0,
  edge_highlight = NULL,
  edge_highlight_color = "red",
  transition_threshold = 0.01,
  transition_line = c("straight", "curved"),
  transition_line_curvature = 0.3,
  transition_line_angle = 90,
  transition_color = "black",
  transition_size = c(0.2, 1),
  transition_alpha = 1,
  transition_arrow_type = "closed",
  transition_arrow_angle = 20,
  transition_arrow_length = grid::unit(0.02, "npc"),
  transition_shorten = 0.05,
  transition_offset = 0,
  transition_highlight = NULL,
  transition_highlight_color = "red",
  aspect.ratio = 1,
  title = NULL,
  subtitle = NULL,
  xlab = NULL,
  ylab = NULL,
  legend.position = "right",
  legend.direction = "vertical",
  theme_use = "theme_this",
  theme_args = list(),
  return_layer = FALSE
)
}
\arguments{
\item{node}{A data frame representing the nodes of the graph.}

\item{edge}{A matrix representing the edges of the graph.}

\item{transition}{A matrix representing the transitions between nodes.}

\item{node_coord}{A character vector specifying the names of the columns in \code{node} that represent the x and y coordinates.}

\item{node_group}{A character vector specifying the name of the column in \code{node} that represents the grouping of the nodes.}

\item{node_palette}{A character vector specifying the name of the color palette for node groups.}

\item{node_palcolor}{A character vector specifying the names of the colors for each node group.}

\item{node_size}{A numeric value or column name of \code{node} specifying the size of the nodes.}

\item{node_alpha}{A numeric value or column name of \code{node} specifying the transparency of the nodes.}

\item{node_highlight}{A character vector specifying the names of nodes to highlight.}

\item{node_highlight_color}{A character vector specifying the color for highlighting nodes.}

\item{label}{Whether to show labels for the nodes.}

\item{label.size}{The size of the labels.}

\item{label.fg}{A character vector specifying the foreground color of the labels.}

\item{label.bg}{A character vector specifying the background color of the labels.}

\item{label.bg.r}{The background color transparency of the labels.}

\item{label_insitu}{Whether to display the node group labels in situ or as numeric values.}

\item{label_repel}{Whether to use force-directed label repulsion.}

\item{label_repulsion}{The repulsion force for labels.}

\item{label_point_size}{The size of the label points.}

\item{label_point_color}{A character vector specifying the color of the label points.}

\item{label_segment_color}{A character vector specifying the color for the label segments.}

\item{edge_threshold}{The threshold for removing edges.}

\item{use_triangular}{A character vector specifying which part of the edge matrix to use (upper, lower, both).}

\item{edge_line}{A character vector specifying the type of line for edges (straight, curved).}

\item{edge_line_curvature}{The curvature of curved edges.}

\item{edge_line_angle}{The angle of curved edges.}

\item{edge_color}{A character vector specifying the color of the edges.}

\item{edge_size}{A numeric vector specifying the range of edge sizes.}

\item{edge_alpha}{The transparency of the edges.}

\item{edge_shorten}{The length of the edge shorten.}

\item{edge_offset}{The length of the edge offset.}

\item{edge_highlight}{A character vector specifying the names of edges to highlight.}

\item{edge_highlight_color}{A character vector specifying the color for highlighting edges.}

\item{transition_threshold}{The threshold for removing transitions.}

\item{transition_line}{A character vector specifying the type of line for transitions (straight, curved).}

\item{transition_line_curvature}{The curvature of curved transitions.}

\item{transition_line_angle}{The angle of curved transitions.}

\item{transition_color}{A character vector specifying the color of the transitions.}

\item{transition_size}{A numeric vector specifying the range of transition sizes.}

\item{transition_alpha}{The transparency of the transitions.}

\item{transition_arrow_type}{A character vector specifying the type of arrow for transitions (closed, open).}

\item{transition_arrow_angle}{The angle of the transition arrow.}

\item{transition_arrow_length}{The length of the transition arrow.}

\item{transition_shorten}{The length of the transition shorten.}

\item{transition_offset}{The length of the transition offset.}

\item{transition_highlight}{A character vector specifying the names of transitions to highlight.}

\item{transition_highlight_color}{A character vector specifying the color for highlighting transitions.}

\item{aspect.ratio}{Aspect ratio passed to \code{theme()}.}

\item{title}{Plot title.}

\item{subtitle}{Plot subtitle.}

\item{xlab}{Label for the x axis.}

\item{ylab}{Label for the y axis.}

\item{legend.position}{Legend position passed to \code{theme()}.}

\item{legend.direction}{Legend direction passed to \code{theme()}.}

\item{theme_use}{Theme function applied to the plot.}

\item{theme_args}{A named list of arguments passed to \code{theme_use}.}

\item{return_layer}{Whether to return the plot layers as a list.
Defaults is \code{FALSE}.}
}
\description{
A function to plot a graph with nodes and edges.
}
\examples{
node <- data.frame(
  x = c(0.2, 0.3, 0.5, 0.3),
  y = c(0.2, 0, 0.6, 0.7),
  group = c("A", "B", "C", "B"),
  row.names = c("n1", "n2", "n3", "n4")
)
edge <- matrix(
  c(
    0, 0.4, 0.2, 0.1,
    0.4, 0, 0.3, 0.2,
    0.2, 0.3, 0 , 0.5,
    0.2, 0.2, 0.5, 0.3
  ),
  nrow = 4,
  byrow = TRUE,
  dimnames = list(rownames(node), rownames(node))
)
GraphPlot(
  node = node,
  edge = edge
)

GraphPlot(
  node = node,
  edge = edge,
  node_group = "group",
  node_highlight = "n1",
  label = TRUE,
  label_repel = TRUE
)
}
