External NDF/EDF

These functions create external node data frames (NDFs) and external edge data frames (EDFs). These specialized tables can be used to create graphs.

create_node_df()

Create a node data frame

create_edge_df()

Create an edge data frame

combine_ndfs()

Combine multiple node data frames

combine_edfs()

Combine multiple edge data frames into a single edge data frame

Graph Creation, Rendering, and I/O

Graphs can be created, read in, written out, and displayed with these functions.

create_graph()

Create a graph object

import_graph()

Import a graph from various graph formats

from_adj_matrix()

Create a graph using an adjacency matrix

from_igraph()

Convert an igraph graph to a DiagrammeR one

to_igraph()

Convert a DiagrammeR graph to an igraph one

open_graph()

Read a graph or graph series from disk

save_graph()

Save a graph or graph series to disk

export_graph()

Export a graph to various image formats

export_csv()

Export a graph to CSV files

render_graph()

Render the graph in various formats

display_metagraph()

Display a property graph's underlying model

Node and Edge Selection

Graph nodes or edges can be selected with these functions. This is useful because some of the Graph Modification functions (ending with "_ws") and all of the Graph Traversal functions can make use of the stored selections.

select_nodes()

Select nodes in a graph

select_nodes_by_id()

Select nodes in a graph by their ID values

select_nodes_by_degree()

Select nodes in the graph based on their degree values

select_nodes_in_neighborhood()

Select nodes based on a walk distance from a specified node

select_last_nodes_created()

Select the last set of nodes created in a graph

select_edges()

Select edges in a graph

select_edges_by_node_id()

Select edges in a graph using node ID values

select_edges_by_edge_id()

Select edges in a graph using edge ID values

select_last_edges_created()

Select the last set of edges created in a graph

get_selection()

Get the current selection available in a graph object

deselect_nodes()

Deselect any selected nodes in a graph

deselect_edges()

Deselect any selected edges in a graph

invert_selection()

Invert selection of nodes or edges in a graph

clear_selection()

Clear an active selection of nodes or edges

Graph Modification

These functions make changes to the graph. We can change many aspects of the graph: the graph representation itself (e.g., adding or removing nodes and edges), or, the attributes of the nodes and edges (in terms of associated data and aesthetics).

add_node()

Add a node to an existing graph object

add_n_nodes()

Add one or several unconnected nodes to the graph

add_n_nodes_ws()

Add a multiple of new nodes with edges to or from one or more selected nodes

add_node_df()

Add nodes from a node data frame to an existing graph object

add_n_node_clones()

Add one or several clones of an existing node to the graph

add_node_clones_ws()

Add clones of a selection of nodes

add_nodes_from_table()

Add nodes and attributes to graph from a table

add_nodes_from_df_cols()

Add nodes from distinct values in data frame columns

add_edge()

Add an edge between nodes in a graph object

add_edge_df()

Add edges from an edge data frame to an existing graph object

add_edges_w_string()

Add one or more edges using a text string

add_edge_clone()

Add a clone of an existing edge to the graph

add_forward_edges_ws()

Add new edges with identical definitions as with a selection of edges

add_reverse_edges_ws()

Add new edges in the opposite directions of a selection of edges

fully_connect_nodes_ws()

Fully connect all nodes in a selection of nodes

add_edges_from_table()

Add edges and attributes to graph from a table

add_path()

Add a path of nodes to the graph

add_cycle()

Add a cycle of nodes to the graph

add_balanced_tree()

Add a balanced tree to the graph

add_star()

Add a star of nodes to the graph

add_prism()

Add a prism of nodes to the graph

add_full_graph()

Add a fully connected graph

add_grid_2d()

Add a 2D grid of nodes to the graph

add_grid_3d()

Add a 3D grid of nodes to the graph

add_gnm_graph()

Add a G(n, m) Erdos-Renyi graph

add_gnp_graph()

Add a G(n, p) Erdos-Renyi graph

add_pa_graph()

Add a preferential attachment graph

add_growing_graph()

Create a random growing graph with m edges added per step

add_smallworld_graph()

Add a Watts-Strogatz small-world graph

add_islands_graph()

Create a random islands graph with edges between the islands

delete_node()

Delete a node from an existing graph object

delete_nodes_ws()

Delete all nodes in a node selection

delete_edge()

Delete an edge from an existing graph object

delete_edges_ws()

Delete all selected edges in an edge selection

delete_loop_edges_ws()

Delete all loop edges associated with a selection of nodes

fully_disconnect_nodes_ws()

Fully disconnect all nodes in a selection of nodes

rev_edge_dir()

Reverse the direction of all edges in a graph

rev_edge_dir_ws()

Reverse the direction of selected edges in a graph using an edge selection

set_node_attrs()

Set node attribute values

set_node_attrs_ws()

Set node attributes with a node selection

join_node_attrs()

Join new node attribute values using a data frame

rescale_node_attrs()

Rescale numeric node attribute values

copy_node_attrs()

Copy a node attribute column and set the name

rename_node_attrs()

Rename a node attribute

drop_node_attrs()

Drop a node attribute column

mutate_node_attrs()

Mutate a set of node attribute values

mutate_node_attrs_ws()

Mutate node attribute values for a selection of nodes

colorize_node_attrs()

Apply colors based on node attribute values

recode_node_attrs()

Recode a set of node attribute values

set_node_position()

Apply a layout position to a single node

layout_nodes_w_string()

Layout nodes using a text-based schematic

nudge_node_positions_ws()

Move layout positions of a selection of nodes

set_node_attr_w_fcn()

Set node attribute values with a graph function

set_edge_attrs()

Set edge attribute values

set_edge_attrs_ws()

Set edge attributes with an edge selection

join_edge_attrs()

Join new edge attribute values using a data frame

rescale_edge_attrs()

Rescale numeric edge attribute values

copy_edge_attrs()

Copy an edge attribute column and set the name

rename_edge_attrs()

Rename an edge attribute

drop_edge_attrs()

Drop an edge attribute column

mutate_edge_attrs()

Mutate a set of edge attribute values

mutate_edge_attrs_ws()

Mutate edge attribute values for a selection of edges

colorize_edge_attrs()

Apply colors based on edge attribute values

recode_edge_attrs()

Recode a set of edge attribute values

node_data()

Insert node data attributes during node creation

node_aes()

Insert node aesthetic attributes during node creation

edge_data()

Insert edge data attributes during edge creation

edge_aes()

Insert edge aesthetic attributes during edge creation

Graph Transformation

Wholesale changes to a graph can be made with any of these functions. Combine two graphs, transform them to different representations, even change whether the graph is directed or undirected.

combine_graphs()

Combine two graphs into a single graph

transform_to_subgraph_ws()

Create a subgraph using a node or edge selection

transform_to_complement_graph()

Create a complement of a graph

transform_to_min_spanning_tree()

Get a minimum spanning tree subgraph

set_graph_undirected()

Convert a directed graph to an undirected graph

set_graph_directed()

Convert an undirected graph to a directed graph

Graph Inspection

Sometimes, you’ll need to gather information about the working graph. This collection of functions allows for extraction of graph components (e.g., ndfs and edfs), attribute information, counts, node and edge properties, and more.

get_node_df()

Get a node data frame from a graph

get_node_df_ws()

Get the graph's ndf filtered by a selection of nodes

get_node_info()

Get detailed information on nodes

get_last_nodes_created()

Get the last set of nodes created in a graph

get_node_attrs()

Get node attribute values

get_node_attrs_ws()

Get node attribute values from a selection of nodes

get_degree_distribution()

Get total degree distribution data for a graph

get_degree_histogram()

Get histogram data for a graph's degree frequency

get_edge_df()

Get an edge data frame from a graph

get_edge_df_ws()

Get the graph's edf filtered by a selection of edges

get_edge_info()

Get detailed information on edges

get_last_edges_created()

Get the last set of edges created in a graph

get_edge_attrs()

Get edge attribute values

get_edge_attrs_ws()

Get edge attribute values from a selection of edges

get_node_ids()

Get a vector of node ID values

get_nbrs()

Get all neighbors of one or more nodes

get_common_nbrs()

Get all common neighbors between two or more nodes

get_non_nbrs()

Get non-neighbors of a node in a graph

get_similar_nbrs()

Get neighboring nodes based on node attribute similarity

get_predecessors()

Get node IDs for predecessor nodes to the specified node

get_successors()

Get node IDs for successor nodes to the specified node

get_all_connected_nodes()

Get all nodes connected to a specified node

get_articulation_points()

Get articulation points

get_periphery()

Get nodes that form the graph periphery

get_edge_ids()

Get a vector of edge ID values

get_edges()

Get node IDs associated with edges

get_paths()

Get paths from a specified node in a directed graph

get_graph_info()

Get metrics for a graph

do_dfs()

Use the depth-first search (dfs) algorithm

do_bfs()

Use the breadth-first search (bfs) algorithm

count_nodes()

Get a count of all nodes

count_edges()

Get a count of all edges

count_loop_edges()

Get count of all loop edges

count_mutual_node_pairs()

Get the number of mutually-connected node pairs

count_asymmetric_node_pairs()

Get the number of asymmetrically-connected node pairs

count_automorphisms()

Get the number of automorphisms

count_unconnected_nodes()

Get count of all unconnected nodes

count_unconnected_node_pairs()

Get the number of unconnected node pairs

count_w_connected_cmpts()

Get the number of weakly-connected components

count_s_connected_cmpts()

Get the number of strongly-connected components

get_multiedge_count()

Get the count of multiple edges

get_edge_count_w_multiedge()

Get count of edge definitions where multiple edges occur

get_agg_degree_in()

Get an aggregate value from the indegree of nodes

get_agg_degree_out()

Get an aggregate value from the outdegree of nodes

get_agg_degree_total()

Get an aggregate value from the total degree of nodes

get_mean_distance()

Get the mean distance

get_min_eccentricity()

Get the minimum graph eccentricity

get_max_eccentricity()

Get the maximum graph eccentricity

get_reciprocity()

Get the graph reciprocity

get_girth()

Get the graph girth

get_adhesion()

Get graph adhesion

get_min_cut_between()

Get the minimum cut between source and sink nodes

get_degree_in()

Get indegree values for all nodes

get_degree_out()

Get outdegree values for all nodes

get_degree_total()

Get total degree values for all nodes

get_betweenness()

Get betweenness centrality scores

get_closeness()

Get closeness centrality values

get_pagerank()

Get the PageRank values for all nodes

get_alpha_centrality()

Get the alpha centrality for all nodes

get_eigen_centrality()

Get the eigen centrality for all nodes

get_authority_centrality()

Get the authority scores for all nodes

get_leverage_centrality()

Get leverage centrality

get_radiality()

Get radiality centrality scores

get_eccentricity()

Get node eccentricities

get_coreness()

Get coreness values for graph nodes

get_closeness_vitality()

Get closeness vitality

get_dice_similarity()

Get Dice similarity coefficient scores

get_jaccard_similarity()

Get Jaccard similarity coefficient scores

get_w_connected_cmpts()

Get all nodes associated with connected components

get_s_connected_cmpts()

Get nodes within strongly connected components

get_cmty_edge_btwns()

Get community membership by edge betweenness

get_cmty_walktrap()

Get community membership using the Walktrap method

get_cmty_louvain()

Get community membership by Louvain optimization

get_cmty_l_eigenvec()

Get community membership by leading eigenvector

get_cmty_fast_greedy()

Get community membership by modularity optimization

is_node_present()

Determine whether a specified node is present

is_edge_present()

Determine whether a specified edge is present

is_edge_loop()

Is the edge a loop edge?

is_edge_multiple()

Is the edge a multiple edge?

is_edge_mutual()

Is the edge mutual with another edge?

is_graph_empty()

Is the graph empty?

is_graph_directed()

Is the graph a directed graph?

is_graph_undirected()

Is the graph an undirected graph?

is_graph_simple()

Is the graph a simple graph?

is_graph_weighted()

Is the graph a weighted graph?

is_graph_connected()

Is the graph a connected graph?

is_graph_dag()

Is the graph a directed acyclic graph?

is_property_graph()

Is the graph a property graph?

Value Caching

Think of caching as a way to temporarily store a vector of values within the graph. Why do this? Well, one could extract node or edge data as vector, cache that in the graph, and then later use it as input in another function, all in the same functional pipeline.

set_cache()

Cache a vector in the graph

get_cache()

Get a cached vector from a graph object

delete_cache()

Delete vectors cached in a graph object

Graph Traversal

Traversing the graph is useful if you have a defined graph model and you’d like to explore the connections and relationships between nodes and edges. Traversals effectively modify a selection of nodes or edges. With the modified selection, we can extract related attributes and work with them.

trav_out()

Traverse from one or more selected nodes onto adjacent, outward nodes

trav_in()

Traverse from one or more selected nodes onto adjacent, inward nodes

trav_both()

Traverse from one or more selected nodes onto neighboring nodes

trav_out_edge()

Traverse from one or more selected nodes onto adjacent, outward edges

trav_in_edge()

Traverse from one or more selected nodes onto adjacent, inward edges

trav_both_edge()

Traverse from one or more selected nodes onto adjacent edges

trav_out_node()

Traverse from one or more selected edges onto adjacent, outward nodes

trav_in_node()

Traverse from one or more selected edges onto adjacent, inward nodes

trav_out_until()

Traverse outward node-by-node until stopping conditions are met

trav_in_until()

Traverse inward node-by-node until stopping conditions are met

trav_reverse_edge()

Traverse to any reverse edges

Graph Series

A series of graphs can be occasionally useful. It’s a convenient container for a set of closely related graphs (for example, a network that changes with time).

create_graph_series()

Create a graph series object

add_graph_to_graph_series()

Add graph object to a graph series object

remove_graph_from_graph_series()

Remove a graph from a graph series

filter_graph_series()

Subset a graph series object

count_graphs_in_graph_series()

Count graphs in a graph series object

get_graph_from_graph_series()

Get a graph available in a series

get_graph_series_info()

Get information on a graph series

render_graph_from_graph_series()

Render a graph available in a series

Graph Metadata

Graph metadata consist of the attributes that don’t necessarily belong to the individual nodes or edges, but, may affect their appearance when the graph is rendered. These metadata can also apply directly to the graph object itself.

add_global_graph_attrs()

Add one or more global graph attributes

delete_global_graph_attrs()

Delete one of the global graph attributes stored within a graph object

get_global_graph_attr_info()

Get global graph attributes

set_graph_name()

Set graph name

set_graph_time()

Set graph date-time and timezone

set_node_attr_to_display()

Set the node attribute values to be rendered

set_edge_attr_to_display()

Set the edge attribute values to be rendered

get_graph_name()

Get graph name

get_graph_time()

Get the graph date-time or timezone

get_graph_log()

Get the graph log information

Graph Actions

Take action! Think of graph actions as little subroutines that execute at every meaningful change of the graph.

add_graph_action()

Add a graph action for execution at every transform

delete_graph_actions()

Delete one or more graph actions stored within a graph object

get_graph_actions()

Get information on any available graph actions

reorder_graph_actions()

Reorder the stored series of graph actions

trigger_graph_actions()

Trigger the execution of a series of graph actions

Graphviz, mermaid, and visNetwork

DiagrammeR()

R + mermaid.js

grViz()

R + viz.js

generate_dot()

Generate DOT code using a graph object

replace_in_spec()

Razor-like template for diagram specification

mermaid()

R + mermaid.js

visnetwork()

Render graph with visNetwork

Shiny

renderDiagrammeR()

Widget render function for use in Shiny

DiagrammeROutput()

Widget output function for use in Shiny

renderGrViz()

Widget render function for use in Shiny

grVizOutput()

Widget output function for use in Shiny

Datasets

node_list_1

Node list - Version 1.

edge_list_1

Edge list - Version 1.

node_list_2

Node list - Version 2.

edge_list_2

Edge list - Version 2.

currencies

ISO-4217 currency data.

usd_exchange_rates

US Dollar exchange rates.