Releases: rich-iannone/DiagrammeR
v0.5
- Added support for subgraphs and Gantt charts in mermaid diagrams
- Added function
graphviz_nodes_edges_df
for generating a 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@^{...}
ingrViz
statements for subscripting and superscripting, respectively
v0.4
- Added support for substitution in Graphviz graph specifications
v0.3
- Added support for the Graphviz neato, twopi, and circo engines
v0.2
- Added the viz.js library to enable GraphViz support
v0.1
- Initial release
- Incorporated into the htmlwidgets framework
- Added the mermaid, d3, and dagre JS libraries
- Added basic shiny app
v0.9.1
-
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()
andset_df_as_edge_attr()
functions; theget_attr_dfs()
function allows for retrieval of stored data frame data -
Added two new graph-generating functions (
add_gnp_graph()
,add_pa_graph()
, andcreate_complement_graph()
) -
Added functions to clone existing nodes and edges (
add_n_node_clones()
andadd_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()
andmutate_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()
andopen_graph()
functions
v0.9.0
- 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 theselect_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 theadd_edge()
function withuse_labels = TRUE
- Quickly and flexibly add color to nodes and edges using the
colorize_node_attrs()
andcolorize_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()
, andrescale_[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()
andjoin_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()
, andadd_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 tocopy_attrs_from
; for those traversal functions where nodes or edges may receive multiple values, one can specify an aggregation type in theiragg
argument (e.g,.trav_in_node()
,trav_both_edge()
) - Multiple conditions can be specified for all traversal types, plus, they are now much easier to write
- Added the
mk_cond()
helper function for creating conditions for any of the traversal functions (trav_...()
), and, theselect_nodes()
andselect_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 usingset_cache()
); get the graph's cache using theget_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()
, andget_cmty_walktrap()
. - Added functions to determine similarity coefficient scores for graph nodes:
get_dice_similarity()
andget_jaccard_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()
andget_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()
andget_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()
anddo_bfs()
functions - Degree data for plots can now be easily obtained using the
get_degree_distribution()
andget_degree_histogram()
functions - Global graph attributes are now more easily modifiable using a set of functions for this purpose:
add_global_graph_attrs()
,clear_global_graph_attrs()
,delete_global_graph_attrs()
,get_global_graph_attrs()
,set_global_graph_attrs()
- Added option to display different text labels on nodes via the
display
node attribute; this is easily set with theset_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 toFALSE
by default) is available in all functions that initialize a graph object (create_graph()
,create_random_graph()
,from_igraph()
,from_adj_matrix()
)
v0.8.5
Increase version number
v0.8.4
Modify version number
v0.8.3
Modify README.md