Skip to contents

autograph 1.1.1

Graphing

  • Fixed grapht() example, which took too long to run, by couching it in \donttest{}
  • Improved graphs() to accept bare longitudinal or dynamic networks
    • Splits it into waves or time slices automatically (consistent with grapht()), instead of erroring with “invalid to use names()<- on an S4 object of class ‘dgCMatrix’”
  • Fixed various errors and warnings in graphr()/graphs() on signed, directed, or changing networks:
    • Fixed recycling warnings (“longer object length is not a multiple of shorter object length”) in graphr() on a complex network
      • arc geom’s strength parameter now excludes loop edges, which are drawn separately by geom_edge_loop0()
    • Fixed spurious warning (“no non-missing arguments to max; returning -Inf”) in graphr() on a changing network without any adoption events (e.g. fict_potter)
      • such networks now rendered as standard changing networks rather than routed through the diffusion node-colour mapping
    • Fixed fails at draw time with “invalid hex digit in ‘color’ or ‘lty’” in graphr() on a signed multiplex network (e.g. fict_marvel)
      • ties on non-signed layers (which have a missing sign) are now drawn solid/positive rather than passing NA to grid
    • Fixed error with “Aesthetics must be either length 1 or the same as the data” in graphr()/graphs() on signed longitudinal or directed networks (e.g. to_waves(ison_monks))
      • per-tie sign linetypes are now mapped through aes() (with an identity scale) so ggraph’s edge geoms expand and subset them consistently with edge colour and width
    • Fixed graphr(..., snap = TRUE) erroring on two-mode networks: their default “hierarchy” layout is now left un-snapped (with an informative message) since collapsing its layered coordinates onto a square grid is not meaningful, while snapping a two-mode network under a force-directed layout continues to work; also hardened the grid-snapping search so a coordinate landing exactly on a grid point is no longer mistaken for a node’s zero self-distance

Tutorials

  • Updated visualisation tutorial with a bit more structuring of further options

autograph 1.1.0

Package

  • Test coverage raised by introducing functional testing infrastructure (tests/testthat/helper-functional.R and test-functional_*.R) for:
    • the layout family
    • the plot.* S3 method family
    • the ag_* palette accessors across all themes
    • graphr()’s aesthetic arguments each enumerated automatically and audited against fixture grids
  • Removed the unused internal helper seq_nodes()
  • Excluded the interactive-only palette helper ggpizza() from coverage
  • Added migraph to Suggests (used in tests only)

Graphing

  • Improved how graphr() treats labels
    • Fixed labels overlapping nodes (closes #13): labels now keep clear of node borders automatically by giving ggrepel each node’s true rendered size, with label_dist adding a further points-based gap (mirroring igraph’s vertex.label.dist) and label_repel = FALSE selecting a fixed offset instead of repulsion.
    • This also fixed a pre-existing bug where non-repelled labels rendered with a fully transparent fill under this package’s theme, making them invisible over nodes.
  • Improved grapht() has been rewritten for smoother, more consistent animations of dynamic networks
    • Node positions now transition seamlessly between waves using the dynamic stress layout from graphlayouts (layout_as_dynamic()), with a new alpha argument controlling layout stability; other layouts are computed once on the aggregate network and held fixed
    • Changing node composition is now handled properly: every node that ever appears gets a stable position and fades in and out in place as it enters and exits the network
    • New isolates argument ("keep" or "fade") controls whether temporarily isolated nodes stay visible or fade out; keep_isolates is deprecated
    • Dynamic (time-stamped, event-based) networks such as irps_nuclear are now split automatically into cumulative time slices via manynet::to_slices(), so a single dynamic network object passed to grapht() works without manual conversion
    • Interval (spell) networks that record tie begin/end lifespans, such as irps_wwi, are now split automatically into one snapshot per change point showing the ties active in that spell, so grapht(irps_wwi) works directly (previously it errored because such networks are dynamic but carry no time attribute for to_slices()); irps_wwi is now a runnable example in the documentation
    • grapht() now uses the dynamic stress layout by default even for two-mode networks (rather than a hierarchy layout, which collapsed many nodes onto a line), suppresses node labels by default for networks with more than 30 nodes to keep frames legible, and fades densely overlapping ties so they read as a density gradient rather than a solid mass
    • Fixed an error when animating networks whose node names contain non-ASCII characters
    • Waves without any ties are no longer silently dropped
    • Closer visual parity with graphr(): directed networks get arrowheads on segments trimmed at the target node, signed networks distinguish positive/negative ties by linetype and colour, mapped aesthetics use the same palettes with factor levels consistent across frames, and legends transition along with the animation
    • Aesthetic-resolution helpers are now shared between graphr() and grapht() (new R/graph_aes.R), so styling cannot drift between static and animated plots
    • Added a test suite for grapht() (no gif rendering required)
    • Now aborts with a clear message when its input cannot be split into waves or slices, instead of failing much later with a cryptic igraph error (closes #40); the underlying cause — to_waves() silently ignoring a time attribute not named “wave” — will be fixed in manynet 2.2.2, and the tutorial example now uses a wave attribute, which splits correctly with manynet 2.2.1
  • Added an edge_bundle argument to graphr() for bundling edges in dense networks (closes #19):
    • TRUE/"force" uses force-directed bundling, with "path" and "minimal" selecting the other non-hierarchical algorithms
    • colour/width/linetype mappings are preserved and directed networks keep their arrowheads.
    • This wires up ggraph’s non-hierarchical bundling geoms (added in ggraph 2.2.0), which were previously imported but never called, so the ggraph dependency is now (>= 2.2.0)
  • Fixed edge_size = 0 not fully suppressing edges on directed networks (closes #50): arrowhead length was hard-coded regardless of edge_size, leaving a visible arrowhead when the line was hidden. Arrow length now scales with the resolved edge width (capped so heavily-weighted edges don’t get oversized heads) and is omitted entirely when the width is 0
  • Fixed two-mode auto-shapes assigning circles to the second mode: the first mode now takes circles and the second squares, as intended
  • Fixed graphr() returning an empty plot for networks consisting only of isolates (e.g. the empty dyad/triad motifs): isolates are now kept whenever removing them would empty the graph
  • Fixed graphs() erroring on lists containing tie-less networks (e.g. plot() on motif censuses): panels sharing a layout now keep isolates so every node has a coordinate in every wave
  • Fixed graphr() erroring on weight or size attributes carrying measure classes (e.g. tie_measure results from netrics stored as attributes)
  • Fixed a vector-recycling warning in graphs()’ ego-network detection

Tutorials

  • Fixed the “Tying up loose ends” exercise in the visualisation tutorial erroring on tie_closeness() (closes #39): the tutorial now loads netrics and uses its measure functions (tie_by_closeness(), tie_is_triangular()), and every tutorial code chunk is now exercised by the functional tests below
  • Reworked the “Visualising Networks” tutorial to match the structure and features of the manynet v2.2 tutorials
    • Rebranded the tutorial in autograph red, with larger, more readable text and matching ‘Run code’ buttons
    • Added a checkbox Aims section, “Catching up”, “Going further”, “Beginner note”, and “In brief” callout boxes, per-page mini-tables of contents, and free play sections with a choose-your-own-data difficulty ladder
    • Added hover-over glossary terms throughout and a closing Summary section with a function overview table and glossary
    • Added quiz questions with feedback, and hints for the coding exercises
    • New coverage of edge_bundle, label_repel/label_dist, the isolates argument, snap grid-snapping, autograph’s own special-purpose layouts, and programmatic export with ggsave()
    • New sections on directed networks (automatic, width-scaled arrowheads and manual control via edge_size), automatic mode shapes in two-mode networks, and manually adjusting a layout’s coordinate table before passing it back via x/y
    • Added artist-themed gifs throughout, including as quiz-answer feedback
  • Added a static, read-only version of the tutorial as a pkgdown article (“Tutorials” menu on the website), as in manynet
  • Added functional testing of all tutorial code chunks (tests/testthat/test-tutorials_autograph.R), mirroring manynet’s tutorial testing infrastructure

Layouts

Plotting

  • Fixed plot.matrix() erroring when no membership argument was supplied, for both one-mode and two-mode matrices

autograph 1.0.3

CRAN release: 2026-05-01

Plotting

  • Fixed the error produced by a namespace reference in a call in ergm_res by serializing it, moving to extdata, and loading it via load_ergm_res()

autograph 1.0.2

Plotting

  • Fixed the error produced by a namespace reference in a call in ergm_res

autograph 1.0.1

Package

  • Updated the logo

Plotting

  • Fixed the error in some flavours by removing environment references in included objects
  • Closed #44 by adding example that uses ggplot2::scale_colour_discrete() to tweak colour output

Tutorials

  • Fixed the tutorial to use netrics functions

autograph 1.0.0

CRAN release: 2026-04-04

Package

  • Updated startup message to declare the set theme

Graphing

  • Improved node_shape to accept more categories
  • Moved node_is_isolate and node_adoption_time to internal helpers to reduce dependencies
  • Fixed #47 by overriding shape to fillable (21)
  • Fixed #10 and #52 by adding label distance parameter
  • Fixed #17 and #40 by improving grapht()

Plotting

  • Closed #37 by adding EgoAlter sienaGOF plot
  • Fixed #36 by using .to_factor() in plot.ag_gof() to correct numeric ordering of statistics, and dropped cumulative correction in plot.sienaGOF()
  • Fixed #38 by dropping linetype in favour of colours even for bw theme in plot.influenceTable()
  • Fixed option reference from snet_theme to stocnet_theme in plot.selectionTable() and plot.influenceTable()
  • Applied ag_font() to migraph model plots for consistent typography
  • Reorganised plot scripts by purpose: summaries, tests, and analysis
  • Fixed #46 by not appending “X” to the names when creating the data frame and moving factor coercion later in the process

Tutorial

  • Fixed #41 by updating tutorials to use fill aesthetics (scale_fill_*()) instead of colour aesthetics (scale_colour_*())

autograph 0.6.0

CRAN release: 2026-03-01

Package

  • Updated logo

Graphing

  • graphr() now auto-dispatches to graphs() when passed a list of graphs
  • graphs() no longer requires patchwork to be loaded separately
  • Closed #12 by changing node aesthetics from color to fill using fillable shape codes (21–25) for nodes to support fill-based colour scales
  • Consolidated legend modifications into internal graph_legends() helper
  • Improved legend labelling:
    • edge sign legend now labelled “Sign”
    • edge weight/width now labelled “Weight”/“Width”
    • node mode/shape legend now labelled “Mode”/“Shape”
  • Closed #8 by adding “isolates” argument to graphr():
    • "legend" (default) removes isolates from the graph but notes them in the legend
    • "caption" removes isolates from the graph but notes them in the caption
    • "keep" retains isolates in the graph as-is (closes #12)

Theming

  • Removed scale_*() functions as redundant with better theme support and match_color()

Layouts

  • Replaced {Rgraphviz} (Bioconductor) with igraph::layout_with_sugiyama for Sugiyama/hierarchy layouts, removing the Bioconductor dependency
  • Improved Sugiyama layout with dummy node insertion and barycenter crossing minimisation for better edge routing
  • Fixed #18 for lattice layout snapping by rotating the layout to optimise edge verticality and horizontality

autograph 0.5.1

Plotting

  • Improved plot.gof.ergm() (closes #31)
    • Now works on directed and two-mode networks and dyadwise shared partners
    • Now has more informative error message if statistic not available
    • Now accepts more descriptive and gof-formula consistent statistic names

autograph 0.5.0

CRAN release: 2025-11-19

Package

  • Shortened startup messages

Plotting

  • Added plot.goldfish.changepoints()
  • Added plot.goldfish.outliers()
  • Added plot.mnet() to avoid igraph::plot.igraph() dispatching

Graphing

  • Restructured scripts for improved maintenance and development in the future
  • Fixed ggplot2::geom_violin() call in graphr() to avoid warnings with ggplot2 v4.0.0
  • Improved graphr() internals to rely on a NULL “layout” parameter and .infer_layout()
  • Improved graphr() to use match_color() for diffusion palettes
  • Fixed graphs() handling of changing networks

autograph 0.4.2

Package

  • Added ggpizzas to README

Plotting

  • Fixed node overflow issue and restored marginal density plot in plot.ag_conv() by dropping +.ggplot()
  • Added automatic legend labelling where node_size or node_color or edge_color is given

Theming

  • Added “hwu” theme for Heriot-Watt University
  • Improved highlight and divergent theme setting to use switch
  • Added some discussion about colour-blindedness to palettes documentation and viz tute
  • Added some instruction on how to customise themes more specifically

autograph 0.4.1

CRAN release: 2025-09-11

Package

  • Improved startup message to ignore class

Theming

  • Added “iast” theme for the Institute of Advanced Studies, Toulouse

Plotting

  • Improved ergm convergence diagnostic plotting by working on the results object, mostly avoiding startup conflict warning
  • Dropped marginal density plot in plot.ag_conv() to fix ggplot2 v4.0.0-related node overflow issue

autograph 0.4.0

CRAN release: 2025-09-10

Package

  • Fixed DOI in CITATION
  • Improved README introduction
  • Improved README graphing illustration, including igraph comparison figure
  • Improved README plotting illustration, added SAOM/ERGM GOF comparison figure

Theming

  • Improved stocnet_theme() documentation
  • Improved stocnet_theme() to register a font family for plots
    • A vector of potential fonts is included for some themes
    • The first font found on the system will be used, and user notified
    • If no fonts are found, the default R font (“sans”) will be used
    • A message is printed to inform the user if the default is used, and how to install missing fonts via extrafont
  • Added font options for “iheid”, “oxf”, “ethz”, “uzh”, and “rug” themes
  • Added ag_font() for retrieving the registered font family
  • Improved match_colors() documentation
  • Exported is_dark() and made it vectorised
  • Added match_colors() and is_dark() tests
  • Dropped theme_*() functions in favour of stocnet_theme()
  • Dropped theme_*() tests
  • Added stocnet_theme() tests
  • Added “cmu” theme for Carnegie Mellon University

Graphing

Plotting

Data

  • Renamed res_monan_traces to monan_conv
  • Renamed res_monan_gof to monan_gof
  • Renamed res_ergm_gof to ergm_gof
  • Renamed res_siena_gof to siena_gof
  • Renamed res_siena_influence to siena_influence
  • Renamed res_siena_selection to siena_selection

autograph 0.3.1

Package

  • Fixed old citation style issue for CRAN

Plotting

  • Added plot.ag_conv() as a new plotting method for convergence diagnostics
    • Plots MCMC traces as a line plot with loess smoothing highlighting the trend
    • Plots overall density plot of the samples on the right margin
  • Improved plotting of {MoNAn} trace objects by using plot.ag_conv()
  • Added plot.mcmc.list() for plotting MCMC samples from ergm::ergm results objects, using plot.ag_conv()

Data

  • Added ergm_res for testing and illustration of plot.mcmc.list(), use ergm_res$sample to access the MCMC sample

autograph 0.3.0

Package

  • Added package documentation
  • Added citation
  • Dropped dependencies tidyr, cli, and concaveman
  • Added more description to the function overview sections on the website
  • Added CODECOV_TOKEN to Github secrets for test coverage reporting

Graphing

  • Fixed graphr() not using theme colours for node and edge aesthetics

Plotting

  • Added new plot class and method for centralising GOF plotting
    • Improved plot.sienaGOF() and plot.gof.stats.monan() to use new plotting method
    • Added plot.gof.ergm() for plotting ERGM GOF objects
    • Improved GOF plotting by adding boxplot within the violins
    • Improved GOF plotting by adding crosses for outliers
    • Improved GOF plotting by adding dashed line for 0.05 and 0.95 quantile bounds
    • Improved GOF plotting by dropping statistics without variance
    • Improved GOF plotting by using cumulative = FALSE by default
  • Fixed issue with pre-v1.3.20 RSiena::gof() objects, thanks @TomSnijders
  • Added testing of GOF plotting
  • Added testing of measures plotting

Theming

Data

Tutorial

  • Added visualisation tutorial from manynet
    • Improved introduction
    • Improved section on titles, labels, and legends
    • Improved section explaining base and grid graphics
    • Added section demonstrating difference between igraph::plot(), ggraph::ggraph(), and graphr()
    • Added table describing the main arguments of graphr() and the visualisation dimensions to which they relate
    • Added section showing how to use “node_shape” (poorly)
    • Improved section showing how to use “node_colour” and “node_group”
    • Added section showing how to use “node_size”
    • Added section showing how to set a theme
    • Added section showing how to use “edge_colour” and “edge_size”
    • Improved section introducing patchwork, graphs(), and grapht()
    • Added plotting section to viz tutorial

autograph 0.2.0

CRAN release: 2025-08-22

Package

  • Added (currently) necessary dependencies
  • Removed unnecessary manynet dependencies

Plotting

  • Added graphr(), graphs(), and grapht() from manynet for quick plotting of one or more graphs
  • Improved +.ggplot() to check whether second object inherits ggplot class (thanks @teunbrand for fixing #110)
  • Fixed issue with edge_linetype in signed, directed networks with weights (closed #14)
  • Updated README with examples of graphr() and others

Themes

  • Added themes for Oxford and UNIGE (closed #1)
  • Improved stocnet_theme() to add option to “stocnet_theme” (previously “snet_theme”)
  • Added is_dark() to check whether a theme is dark or light
  • Added match_color() to return closest matching colors from a palette

Layouts

  • Added layout_valence() for signed graphs (closed #6)
  • Added configurational layouts from manynet
  • Added aliases for various layout_tbl_graph_*() functions

autograph 0.1.2

CRAN release: 2025-07-02

Package

  • Fixed line break issues in DESCRIPTION

Themes

Layouts

  • Fixed “layout_layered” to accept typical ggraph parameters

manynet

  • Added return value statements

migraph

  • Added return value statements

RSiena

  • Added return value statements

autograph 0.1.1

Package

  • Fixed DESCRIPTION issues

autograph 0.1.0

Package

  • Initial setup, with all the goodies

Theming

  • Added stocnet_theme() for setting a theme that can then be reused across successive plots (closes #3)
    • For example, stocnet_theme("iheid") for IHEID colour theme
  • Added ag_*() palettes, for example:
    • ag_highlight() to select the highlight colours of a particular palette
  • Added match_color() for matching one or more hexcodes to a palette’s offerings

Plotting

Layouts

Data

  • Added some precooked results for testing and illustration