bipartite_D3 {bipartiteD3}R Documentation

Generate interactive bipartite networks

Description

Plots one or more interactive bipartite graphs. Data can be supplied either in bipartite package format or as a data frame and generates an html widget. There are range of display options, see vignette for examples.

Usage

bipartite_D3(
  data,
  filename = "bipartiteD3Script",
  PrimaryLab = "Primary",
  SecondaryLab = "Secondary",
  SiteNames = NULL,
  colouroption = c("monochrome", "brewer", "manual")[1],
  HighlightLab = "Unlinked",
  HighlightCol = "#3366CC",
  monoChromeCol = "rgb(56,43,61)",
  ColourBy = c(1, 2)[2],
  BrewerPalette = "Accent",
  NamedColourVector,
  MainFigSize = NULL,
  SortPrimary = NULL,
  SortSecondary = NULL,
  mp = c(1, 1),
  MinWidth = 10,
  Pad = 1,
  IndivFigSize = c(200, 400),
  BarSize = 35,
  Orientation = c("vertical", "horizontal")[1],
  EdgeMode = c("straight", "smooth")[2],
  BoxLabPos = NULL,
  IncludePerc = TRUE,
  PercentageDecimals = 0,
  PercPos = NULL,
  CSS_Output_Supress = FALSE,
  PRINT = FALSE
)

Arguments

data

Food web or webs to be plotted. Can be either in data.frame format (Sp1,Sp2, Site1, Site2 etc) or bipartite style matrix, list of matrices or array.

filename

Character string to name the .js and .css files. Do not include a file extension.

PrimaryLab

Character string to label left (lower) half of graph (e.g. 'plant' or 'host').

SecondaryLab

Character string to label right (upper) half of graph (e.g. 'pollinator' or 'parasitoid').

SiteNames

Character vector giving name or names of site or sites. Used as a title for facets.

colouroption

Either 'monochrome', 'brewer' or 'manual'.

HighlightLab

Name of interactor species to highlight. (Text must match).

HighlightCol

Colour to highlight species. Can be any format read by html, eg simple names: 'PINK', hexcode: '#FFC0CB' or rgb: 'rgb(255,192,203)'

monoChromeCol

If using monochrome option, what colour to use. Can be any format read by html, eg simple names 'PINK', hexcode '#FFC0CB' or rgb 'rgb(255,192,203)'

ColourBy

Which set of interactors to colour by. 1= primary, 2= secondary

BrewerPalette

RColorBrewer palette to use, e.g. 'Set3'. Be sure to select one with enough available colours (it will warn)

NamedColourVector

Named vector of colours for manual colour assignment. Can be any format read by html, eg simple names 'PINK', hexcode '#FFC0CB' or rgb 'rgb(255,192,203)'

MainFigSize

c(width, height). Size of html container for the whole figure

SortPrimary

Vector of order of species to arrange primary level. Default is alphabetical

SortSecondary

Vector of order of species to arrange secondary level. Default is alphabetical

mp

Numeric vector c(rows, columns) for distribution of facets

MinWidth

Numeric. Minimum size to shrink unselected interactors to.

Pad

Numeric. Whitespace gap between species.

IndivFigSize

c(width, height) Size of each facet, specifically the links

BarSize

Thickness of bars representing interactors

Orientation

Either 'horizontal' or 'vertical' orientation. Note that Vertical is currently much better supported!

EdgeMode

Set to 'straight' if you want to avoid default curly lines.

BoxLabPos

c(x_primary,x_secondary) To adjust position of species labels away from graph. Default is based on maximum length of labels.

IncludePerc

Logical - whether or not to show percentage links

PercentageDecimals

Number of decimal places to display percentages to. Useful if rare species are rounded to 0.

PercPos

c(x_p,x_s) To adjust position of percentages away from graph. Default is based on maximum length of labels.

CSS_Output_Supress

Logical - set to TRUE if you have changed the CSS file manually and don't want it overridden

PRINT

Logical - output generated JavaScript to screen?

Details

This function offers a straightforward way to generate an interactive bipartite graph. Hovering over a species will focus just on that species and its interactors, and display their relative fractions. Where multiple networks are examined simultaneously, the selection occurs in tandem.

It will try to download source code of a version of the vis JavaScript library, generate a JavaScript file (.js) and a Cascading Style Sheet (.css) and place them in the working directory. These are then used by r2d3() to create an html object.

When used in RStudio version 1.2+ this is visible in the viewer pane. If using an earlier version of Rstudio, the graph may appear as a blank space in the default RStudio viewer. In this case, you can still use knitr to create an html file and view it in a browser.

Guessing appropriate sizes for the figures can be a process of trial and error. The best values depend on the length of the labels, the number of interactions and their relative weighting. See Vignette for details. If the figure looks weirdly proportioned, the links appear to invert or one of the halves is notably longer than other other, the main figure margins are probably too small. It is often necessary to experiment a little with large or complex figures.

To include figures as a static plot for publication, there are several options. The r2D3 package provides the save_d3_png and save_d3_html functions to directly save d3 objects. This is normally the easiest. If using RStudio v1.2+, then it is possible to just export from the viewer pane.

Otherwise, from an html document generated by knitr, it is often useful to 'print to pdf' within the browser. Finally is possible to extract the svg segment that relates to the figure from the html file and save it directly as an svg file, which can then be used in e.g. Inkscape.

Value

Uses r2d3() to generate an html widget object. Can be viewed either in viewer pane (RStudio V1.2+) or with knitr. See Vignette. As a side effect, saves visjs.js (the vis plotting library), filename.js and filename.css to the working directory.

Examples

## Simple Bipartite Style Data Set:
## Not run:   testdata <- data.frame(higher = c("bee1","bee1","bee1","bee2","bee1","bee3"),
lower = c("plant1","plant2","plant1","plant2","plant3","plant4"),
webID = c("meadow","meadow","meadow","meadow","meadow","meadow"), freq=c(5,9,1,2,3,7))
SmallTestWeb <- bipartite::frame2webs(testdata,type.out="array")


bipartite_D3(SmallTestWeb, filename = 'demo1')

## End(Not run)
## For more examples see vignette

[Package bipartiteD3 version 0.3.0 Index]