The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
{knitr} from Suggests: it was used solely by
the tutorial tests, which now extract the tutorials’ {r}
chunks with the same small scanner used in {manynet} and
{netrics} (verified to yield an identical expression set to
knitr::purl() on the autograph tutorial){tidygraph} from Imports: its only functional
use was reading the edgelist’s target column in
.infer_end_cap(), which now uses
igraph::as_edgelist() (verified to give identical end
caps){graphlayouts} from Suggests to Imports, since
it is required for grapht()’s default “stress”
layout (without it, wave-to-wave node transitions silently degraded to a
static aggregate layout) and is installed regardless as
{ggraph} imports it; its
requireNamespace()/thisRequires() guards have
been removed{manynet} version
(>= 2.2.1)actions/checkout@v7,
actions/upload-artifact@v7,
actions/download-artifact@v8), replacing some long-outdated
@v2 pinsr-lib/actions/setup-pandoc from @v1 to
@v2, matching every other r-lib/actions
stepAUTOGRAPH_STRICT_AUDIT=true, which the CI check step now
sets, so a broken layout or plot method can no longer pass CI greenskip() aborts the enclosing test_that(), the
first such mismatch had been silently preventing every later layout from
being audited at all (the layout audit goes from 21 to 108
assertions)NOT_CRAN=true, without
which every skip_on_cran() test — most of the suite — was
skipped while covr ran, badly under-reporting coveragerelease and pkgdown no longer run under
if: always(), so a failing R CMD check can no
longer tag a release or deploy the websitegraphr()’s sweep over every bundled
{manynet} dataset with a representative sample, and dropped
the plot.* smoke tests now subsumed by the plot-method
audit; CRAN-visible test time falls while CRAN-visible assertions
risetest-functional_errors.R), an
audit of the user-facing layout_* aliases, and examples for
the ag_* palette accessors and configurational layouts,
none of which were previously coveredon.exit(), so global theme state cannot leak between
parallel test workersstop(), warning()
and stopifnot() calls to the {manynet} cli
interfacegraphs()/grapht() erroring (“Can’t
combine ..1 ..2 active flag and
numeric height/mass in fict_starwars)
to_waves() that coerces the offending attributes when
{manynet}’s splitter cannot combine themgraphr(..., snap = TRUE) erroring (“‘-’ only
defined for equally-sized data frames”) whenever a node sat exactly on a
grid point
depth_first_recursive_search() compared each node
against a distance vector that still included its own zero
self-distance, so an exact hit selected that entry and yielded an empty
grid point; the self-distance is now dropped before the nearest vacant
point is chosengraphr() to ignore snap = TRUE
for layered layouts (“hierarchy”, “railway”, “ladder”, “alluvial”,
“multilevel”, “lineage”, “layered”)
graphr() erroring with “argument "node_color" is
missing, with no default” when passed a list of networks; the call is
now forwarded to graphs() as written, rather than argument
by argumentgraphr() checks the attribute names given
to its aesthetic arguments
graphr(net, node_color = "welth") reported “Unknown colour
name: welth” at draw time, and now reports that “welth” was not found
among the node attributes and asks whether “wealth” was meantnode_shape (previously “Shape
aesthetic contains invalid value”), node_size and
edge_size (previously “Aesthetics must be either length 1
or the same as the data (8)”), node_group, and
edge_coloras_tidygraph()isolates being validated only when the network
happened to contain isolates, so the same typo errored on one network
and was ignored on anothernode_size values between 0 and 1 being silently
multiplied by ten; node_size = 0.5 now means 0.5, while a
vector of proportions is still rescaled to stay visiblegraphs() producing empty panels by checking
waves against the number of networks availableR/graph_checks.R) shared by graphr(),
graphs(), grapht(), the
layout_*() functions, and stocnet_theme()
{ggplot2}, {grid}, or match.arg()
(so isolates = "drop" reports isolates, rather
than “‘arg’ should be one of …”)node_color = "Wealth" finds the wealth
attributegraphr() and
constant-colour note shared by graphr() and
grapht() so that their wording cannot driftplot.node_member() to draw its dendrogram with
{ggraph}
hclust object’s own merge heights to the
dendrogram layout to reproduce the previous plot’s leaf order, merge
heights, cluster label colours, and cutpoint lineag_base() rather than black,
matching the height axis and so respecting the active
stocnet_theme(){ggdendro} from Importsplot.node_member(), which pointed at
manynet::node_in_community(); that function moved to
{netrics} in manynet 2.0.0plot.node_motif()/plot.network_motif()
(“Cannot plot these motifs yet, sorry.”), match_color(),
plot.diff_model(), and the concentric and hierarchy layouts
(“Duplicated nodes in layers!”)layout, which now
names the argument, suggests the nearest layout, and lists autograph’s
own layouts, rather than reporting “object ‘layout_tbl_graph_stresss’
not found”
layout = igraph::layout_with_fr), rather than its
name, now says so instead of erroring with “invalid indexing”membership/level/rank arguments
that the partition layouts require, which name the argument and offer
the closest matchstocnet_theme() to error with the nearest
match on an unrecognised theme name, instead of warning and silently
leaving the previous theme in place; giving more than one theme name is
also caughtgrapht() example, which took too long to run, by
couching it in \donttest{}graphs() to accept bare longitudinal or
dynamic networks
grapht()), instead of erroring with “invalid to use
names()<- on an S4 object of class ‘dgCMatrix’”graphr()/graphs() on signed, directed, or
changing networks:
graphr() on a complex network
strength parameter now excludes loop edges,
which are drawn separately by geom_edge_loop0()graphr() on a changing network without any
adoption events (e.g. fict_potter)
graphr() on a signed multiplex network
(e.g. fict_marvel)
NA to gridgraphr()/graphs() on signed
longitudinal or directed networks
(e.g. to_waves(ison_monks))
aes()
(with an identity scale) so ggraph’s edge geoms expand and subset them
consistently with edge colour and widthgraphr(..., 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-distancetests/testthat/helper-functional.R and
test-functional_*.R) for:
plot.* S3 method familyag_* palette accessors across all themesgraphr()’s aesthetic arguments each enumerated
automatically and audited against fixture gridsseq_nodes()ggpizza()
from coverage{migraph} to Suggests (used in tests only)graphr() treats labels
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.grapht() has been rewritten for smoother, more
consistent animations of dynamic networks
{graphlayouts}
(layout_as_dynamic()), with a new alpha
argument controlling layout stability; other layouts are computed once
on the aggregate network and held fixedisolates argument ("keep" or
"fade") controls whether temporarily isolated nodes stay
visible or fade out; keep_isolates is deprecatedirps_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
conversionbegin/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 documentationgrapht() 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 massgraphr(): 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 animationgraphr() and grapht() (new R/graph_aes.R), so
styling cannot drift between static and animated plotsgrapht() (no gif rendering
required)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.1edge_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(>= 2.2.0)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 0graphr() 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 graphgraphs() 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
wavegraphr() erroring on weight or size attributes
carrying measure classes (e.g. tie_measure results from
{netrics} stored as attributes)graphs()’
ego-network detectiontie_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{manynet} v2.2 tutorials
edge_bundle,
label_repel/label_dist, the
isolates argument, snap grid-snapping,
autograph’s own special-purpose layouts, and programmatic export with
ggsave()edge_size), automatic
mode shapes in two-mode networks, and manually adjusting a layout’s
coordinate table before passing it back via
x/y{manynet}tests/testthat/test-tutorials_autograph.R), mirroring
{manynet}’s tutorial testing infrastructurelayout_tbl_graph_layered() ordering nodes by the
names rather than the positions of their neighbours in adjacent layers,
which degraded every barycenter sweep to NA and raised warningsdplyr::case_match() with
dplyr::recode_values()plot.matrix() erroring when no
membership argument was supplied, for both one-mode and
two-mode matricesergm_res by serializing it, moving to extdata, and loading
it via load_ergm_res()ergm_resggplot2::scale_colour_discrete() to tweak colour
outputnode_shape to accept more categoriesnode_is_isolate and
node_adoption_time to internal helpers to reduce
dependenciesgrapht().to_factor() in
plot.ag_gof() to correct numeric ordering of statistics,
and dropped cumulative correction in plot.sienaGOF()plot.influenceTable()snet_theme to
stocnet_theme in plot.selectionTable() and
plot.influenceTable()ag_font() to migraph model plots for consistent
typographyscale_fill_*()) instead of colour aesthetics
(scale_colour_*())graphr() now auto-dispatches to graphs()
when passed a list of graphsgraphs() no longer requires {patchwork} to
be loaded separatelycolor to
fill using fillable shape codes (21–25) for nodes to
support fill-based colour scalesgraph_legends() helpergraphr():
"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)scale_*() functions as redundant with better
theme support and match_color(){Rgraphviz} (Bioconductor) with
igraph::layout_with_sugiyama for Sugiyama/hierarchy
layouts, removing the Bioconductor dependencyplot.gof.ergm() (closes #31)
plot.goldfish.changepoints()plot.goldfish.outliers()plot.mnet() to avoid
igraph::plot.igraph() dispatchingggplot2::geom_violin() call in
graphr() to avoid warnings with ggplot2 v4.0.0graphr() internals to rely on a NULL “layout”
parameter and .infer_layout()graphr() to use match_color() for
diffusion palettesgraphs() handling of changing networksplot.ag_conv() by dropping +.ggplot()plot.ag_conv() to fix
{ggplot2} v4.0.0-related node overflow issuestocnet_theme() documentationstocnet_theme() to register a font family for
plots
{extrafont}ag_font() for retrieving the registered font
familymatch_colors() documentationis_dark() and made it vectorisedmatch_colors() and is_dark()
teststheme_*() functions in favour of
stocnet_theme()theme_*() testsstocnet_theme() testsgraphr() by using registered fonts where
availablegraphr() by using
ag_qualitative() for discrete colour scalesplot.selectionTable() and
plot.influenceTable() documentation by consolidating them
together into one help fileplot.ag_conv(), plot.ag_gof(),
and plot_interp by using registered fonts where availableplot.sienaGOF() to use lower case auxiliary
statistic descriptionres_monan_traces to
monan_convres_monan_gof to monan_gofres_ergm_gof to ergm_gofres_siena_gof to siena_gofres_siena_influence to
siena_influenceres_siena_selection to
siena_selectionplot.ag_conv() as a new plotting method for
convergence diagnostics
{MoNAn} trace objects by using
plot.ag_conv()plot.mcmc.list() for plotting MCMC samples from
ergm::ergm results objects, using
plot.ag_conv()ergm_res for testing and illustration of
plot.mcmc.list(), use ergm_res$sample to
access the MCMC sample{tidyr}, {cli}, and
{concaveman}graphr() not using theme colours for node and
edge aestheticsplot.sienaGOF() and
plot.gof.stats.monan() to use new plotting methodplot.gof.ergm() for plotting ERGM GOF
objectscumulative = FALSE by
defaultset_stocnet_theme() alias for
stocnet_theme()res_ergm_gof for testing and illustration of
plot.gof.ergm()igraph::plot(), ggraph::ggraph(), and
graphr()graphr()
and the visualisation dimensions to which they relate{patchwork},
graphs(), and grapht()graphr(), graphs(), and
grapht() from manynet for quick plotting of one or more
graphs+.ggplot() to check whether second object
inherits ggplot class (thanks @teunbrand for fixing #110)graphr() and
othersstocnet_theme() to add option to
“stocnet_theme” (previously “snet_theme”)is_dark() to check whether a theme is dark or
lightmatch_color() to return closest matching colors
from a paletteag_sequential()plot.traces.monan()plot.gof.stats.monan()stocnet_theme() for setting a theme that can then
be reused across successive plots (closes #3)
stocnet_theme("iheid") for IHEID colour
themeag_*() palettes, for example:
ag_highlight() to select the highlight colours of a
particular palettematch_color() for matching one or more hexcodes
to a palette’s offeringsplot.diff_model()plot.matrix()plot.learn_model()plot.network_measures()plot.network_motif()plot.tie_measure()plot.node_measure()plot.node_member()plot.node_members()plot.node_motif()plot.netlm()plot.netlogit()plot.network_test()plot.diffs_model()plot.sienaGOF()plot.influenceTable()plot.selectionTable()layout_tbl_graph_matching() for positioning nodes
according to their manynet::to_matching() partnerslayout_tbl_graph_layered() for
layering nodes according to a Sugiyama-type layoutThese binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.