DiagrammeR now has a dependency on viridisLite instead of viridis (@olivroy, #511)
DiagrammeR nows uses testthat 3rd edition (@olivroy, #498)
No longer use deprecated features from tibble, igraph and tidyselect (>= 1.2.0) (@olivroy, #497, #507)
Error messages have been reviewed and now use cli (@olivroy, #499, #502)
It is now easier to install suggested packages on the fly.
DiagrammeR now uses rlang::check_installed()
internally.
(@olivroy,
#499)
DiagrammeR()
checks the type
argument
more strictly. (@olivroy, #506)
DiagrammeR is compatible with igraph (>= 2.0.0) (@maelle, #500)
get_constraint()
and
get_bridging()
graph inspection functions. (#486)grViz()
and
mermaid()
Fix malformed CSS selector in
htmlwidgets/grViz.js
Fixes for dev tidyr. Only call
replace_na(replace = "")
on character columns. (@DavisVaughan,
#448)
Added the envir
argument to the grViz()
and replace_in_spec()
functions. (@atusy, #408)
set_df_as_node_attr()
,
set_df_as_edge_attr()
, and get_attr_dfs()
functions.Added the helper functions node_aes()
,
node_data()
, edge_aes()
, and
edge_data()
to facilitate the binding of node and edge
aesthetic and data attribute values; several functions now have namesake
arguments that accept these functions’ output.
Added traversal functions trav_in_until()
and
trav_out_until()
.
Information about the graph is now displayed in the console when the graph object is called
Error messages are now more helpful and try to provide pointers for the more common errors.
create_complement_graph()
is deprecated in favor of
create_graph()
+
transform_to_complement_graph()
.
create_subgraph_ws()
is deprecated in favor of
create_graph()
+
transform_to_subgraph_ws()
.
edge_rel()
is deprecated in favor of
graph$edges_df$rel
for edge relationships.
create_random_graph()
is deprecated in favor of
create_graph()
+ add_gnm_graph()
,
add_growing_graph()
, add_islands_graph()
,
add_smallworld_graph()
for the creation of randomized
graphs.
add_to_series()
->
add_graph_to_graph_series()
remove_from_series()
->
remove_graph_from_graph_series()
get_graph_from_series()
->
get_graph_from_graph_series()
create_series()
->
create_graph_series()
subset_series()
->
filter_graph_series()
render_graph_from_series()
->
render_graph_from_graph_series()
series_info()
->
get_graph_series_info()
graph_count()
->
count_graphs_in_graph_series()
graph_info()
-> get_graph_info()
node_present()
->
is_node_present()
edge_present()
->
is_edge_present()
edge_count()
-> count_edges()
node_count()
-> count_nodes()
edge_info()
-> get_edge_info()
node_info()
-> get_node_info()
node_type()
-> get_node_attrs()
get_global_graph_attrs()
->
get_global_graph_attr_info()
get_min_spanning_tree()
->
transform_to_min_spanning_tree()
cache_edge_attrs()
, cache_edge_attrs_ws()
,
cache_edge_count_ws()
, cache_node_attrs()
,
cache_node_attrs_ws()
, cache_node_count_ws()
,
clear_global_graph_attrs()
, image_icon()
,
set_global_graph_attrs()
.
add_node_clones_ws()
, count_loop_edges()
,
count_s_connected_cmpts()
,
count_unconnected_nodes()
,
count_w_connected_cmpts()
, delete_cache()
,
delete_loop_edges_ws()
, deselect_edges()
,
deselect_nodes()
, fully_connect_nodes_ws()
,
fully_disconnect_nodes_ws()
, get_edge_df_ws()
,
get_node_df_ws()
, is_graph_undirected()
,
set_graph_directed()
,
set_edge_attr_to_display()
Added functions to generate 2D and 3D grid graphs
(add_grid_2d()
and add_grid_3d()
)
Added _ws()
(with selection) variants of the
mutate_[node/edge]_attrs()
functions for mutating node or
edge attributes for only those nodes/edges in an active
selection
Incorporated an edges
argument into the
select_edges()
function in order to filter the selection of
edges to a set of edge ID values
Reduced the dependency on R to version >= 3.2.0
Simplified many functions internally
Added a default print method for graph objects
Allowed use of bare node or edge attribute names in many functions
Implemented graph actions as a means to run one or more functions
at every graph transformation step; for example, this can be used to
automatically update a node attribute such as betweenness
whenever modifications to the graph are made (e.g., adding nodes,
removing edges, etc.)
Data frames can be set as node or edge attributes with the
set_df_as_node_attr()
and
set_df_as_edge_attr()
functions; the
get_attr_dfs()
function allows for retrieval of stored data
frame data
Added two new graph-generating functions
(add_gnp_graph()
, add_pa_graph()
, and
create_complement_graph()
)
Added functions to clone existing nodes and edges
(add_n_node_clones()
and
add_edge_clone()
)
Added several count_*
functions
(count_asymmetric_node_pairs()
,
count_automorphisms()
, etc.)
Added new functions to obtain graph properties
(get_adhesion()
, get_girth()
,
get_reciprocity()
, etc.)
Added several is_*
functions for graph and edge
properties (e.g., is_edge_loop()
,
is_graph_dag()
, etc.)
The mutate_node_attrs()
and
mutate_edge_attrs()
functions now have simpler and more
powerful interfaces for mutating node and edge attributes
Graphs can be easily saved to disk (and read from disk) using the
save_graph()
and open_graph()
functions
Modified basic structure of node and edge data frames such that ID values are automatically set as integer values
Just as nodes do, edges now have edge ID values (they can be
obtained using get_edge_ids()
and they can be used directly
in the select_edges_by_edge_id()
function)
When created, a graph object automatically generates a graph ID
and graph name (which can be modified using
set_graph_name()
)
So long as node label
values are unique, they may
now be used to compose edges using the add_edge()
function
with use_labels = TRUE
Quickly and flexibly add color to nodes and edges using the
colorize_node_attrs()
and
colorize_edge_attrs()
functions
Added functions to selectively modify existing node and edge
attributes: copy_[node/edge]_attrs()
,
drop_[node/edge]_attrs()
,
mutate_[node/edge]_attrs()
,
recode_[node/edge]_attrs()
,
rename_[node/edge]_attrs()
, and
rescale_[node/edge]_attrs()
.
New node and edge attributes can now be easily added to a graph
via a data frame using the join_node_attrs()
and
join_edge_attrs()
functions
Several graph generators are available for quickly adding graph
primitives to a graph object (add_balanced_tree()
,
add_cycle()
, add_full_graph()
,
add_path()
, add_prism()
, and
add_star()
)
All traversal functions can now migrate numeric node or edge
attribute values to the traversed edges (e.g.,
trav_out_edge()
, trav_in_node()
) by providing
an attribute name to copy_attrs_from()
; for those traversal
functions where nodes or edges may receive multiple values, one can
specify an aggregation type in their agg
argument (e.g,.
trav_in_node()
, trav_both_edge()
)
Multiple conditions can be specified for all traversal types and
for the select_nodes()
and select_edges()
functions, plus, they are much easier to write
Added the mk_cond()
helper function for creating
conditions for any of the traversal functions (trav_...()
),
and, the select_nodes()
and select_edges()
functions; this helper allows for easier composition of
selection/traversal conditions using variables and/or function
calls
With a selection of edges one can now use
select_rev_edges_ws()
to transform that selection to that
of the selected edges’ reverse edges (where available); the option is
there to add the reverse edges to the edge selection or to simply
replace the current selection
Caching attributes for later use has been made simpler with a
collection of cache_...()
functions (or, set the cache
explicitly using set_cache()
); get the graph’s cache using
the get_cache()
function
Added functions to allow for layout control of nodes
(set_node_position()
, layout_nodes_w_string()
,
nudge_node_positions()
)
Added functions to convert DiagrammeR graphs to
igraph graphs and vice versa (to_igraph()
,
from_igraph()
)
Now you can create a graph from an adjacency matrix
(from_adj_matrix()
)
Added functions to get community membership with a variety of
algorithms: get_cmty_edge_btwns()
,
get_cmty_fast_greedy()
, get_cmty_l_eigenvec()
,
get_cmty_louvain()
, and
get_cmty_walktrap()
.
Added functions to determine similarity coefficient scores for
graph nodes: get_dice_similarity()
and
get_dice_similarity()
.
Constraint scores for nodes can now be determined using the
get_constraint()
function
Functions for getting information on nodes neighbors have been
added: get_nbrs()
, get_non_nbrs()
,
get_similar_nbrs()
.
Groups of nodes that are weakly or strongly connected components
can be determined using the get_w_connected_cmpts()
and
get_s_connected_cmpts()
functions
Get articulation points (i.e., nodes that, when removed,
disconnect the graph) with the get_articulation_points()
function
Obtain centrality measures for graph nodes using the
get_closeness()
and get_betweenness()
functions
Get the minimum-spanning tree subgraph from a graph with weighted
edges using the get_min_spanning_tree()
function
The edge direction may be reversed for an entire graph
(rev_edge_dir()
) or for part of a graph using an edge
selection (rev_edge_dir_ws()
)
Depth-first search and breadth-first search algorithms are
available in the do_dfs()
and do_bfs()
functions
Degree data for plots can now be easily obtained using the
get_degree_distribution()
and
get_degree_histogram()
functions
Global graph attributes are now more easily modifiable using a
set of functions for this purpose:
add_global_graph_attrs()
,
delete_global_graph_attrs()
,
get_global_graph_attr_info()
.
Added option to display different text labels on nodes via the
display
node attribute; this is easily set with the
set_node_attr_to_display()
function
Rewrote many graph functions (e.g. traversals) so that they are faster for very large graphs
A log of all graph functions that directly modify the graph is
now part of the graph object (graph$graph_log
)
Added functionality to automatically generate graph backups at
every graph modification; this is in the form of RDS files deposited in
a subdirectory (name is based on the graph ID) of the working directory;
the option (write_backups
, set to FALSE
by
default) is available in all functions that initialize a graph object
(create_graph()
, create_random_graph()
,
from_igraph()
, from_adj_matrix()
)
Revised many graph functions so they work better together
Added many testthat tests to maintain the quality of the graph functions
Added functions create_random_graph()
,
import_graph()
, combine_graphs()
,
country_graph()
and
select_graph_from_series()
Added support for visNetwork graphs as a
rendering option with render_graph()
Renamed functions graphviz_graph()
and
graphviz_render()
to create_graph()
and
render_graph()
, respectively
Removed function graphviz_export()
(exporting now
handled with render_graph()
)
Added several new functions to inspect, analyze, and modify
graphs: display_graph_object()
, node_info()
,
edge_info()
, node_present()
,
edge_present()
, get_nodes()
,
get_edges()
, get_predecessors()
,
get_successors()
, node_count()
,
edge_count()
, is_graph_empty()
,
is_graph_directed()
, add_node()
,
add_edges()
, delete_node()
,
delete_edge()
, node_type()
,
edge_relationship()
, create_series()
,
add_to_series()
, remove_from_series()
,
graph_count()
, subset_series()
,
trigger_script()
, render_graph_from_series()
,
and series_info()
Added several functions to work with graphs:
create_node_df()
, create_edges()
,
combine_nodes()
, combine_edges()
,
scale_nodes()
, scale_edges()
,
get_nodes()
, node_info()
,
graphviz_graph()
, graphviz_render()
, and
graphviz_export()
Removed the graphviz_nodes_edges_df()
and
graphviz_single_df()
functions
Added support for subgraphs and Gantt charts in mermaid diagrams
Added function graphviz_nodes_edges_df()
for
generating Graphviz DOT code that
defines nodes and edges (and their attributes) from data in two data
frames: one for nodes, the other for the edge operations
Added function graphviz_single_df()
for generating
Graphviz DOT code from a single data
frame
Incorporated the new substitution operators @_{...}
or @^{...}
in grViz
statements for
subscripting and superscripting, respectively
Added support for substitution in Graphviz graph specifications
Added support for Graphviz diagrams in the Shiny app
Initial release
Incorporated into the htmlwidgets framework
Added basic shiny app