Nothing
## ---- include = FALSE-----------------------------------------------------------------------------
options(width = 100)
## ---- results="hide"------------------------------------------------------------------------------
library(econullnetr)
set.seed(1234) # To create a reproducible example
sil.null <- generate_null_net(Silene[, 2:7], Silene.plants[, 2:6], sims = 100,
data.type = "names", summary.type = "sum",
c.samples = Silene[, 1],
r.samples = Silene.plants[, 1])
## -------------------------------------------------------------------------------------------------
sil.links <- test_interactions(sil.null, signif.level = 0.95)
## -------------------------------------------------------------------------------------------------
sil.links[40:51, ]
## -------------------------------------------------------------------------------------------------
sum(sil.links$Test == "Weaker" | sil.links$Test == "Stronger")
## ----fig.width=8, fig.height=4, warning = FALSE---------------------------------------------------
# Calculate the mean abundance of each plant species across all samples to
# use in the bipartite plot
mean.abunds <- colMeans(Silene.plants[, 2:6])
plot_bipartite(sil.null, signif.level = 0.95,
edge.cols = c("#67a9cf", "#F7F7F7", "#ef8a62"),
low.abun = mean.abunds, abuns.type = "independent",
low.abun.col = "black", high.abun.col = "black",
high.lablength = 5, low.lablength = 5)
## ----fig.width = 7, fig.height = 5----------------------------------------------------------------
plot_preferences(sil.null, "Sphaerophoria.scripta", signif.level = 0.95,
type = "counts", xlab = "Number of visits", p.cex = 2,
l.cex = 1, lwd = 2, font = 3)
## ---- results="hide"------------------------------------------------------------------------------
net.stats <- bipartite_stats(sil.null, index.type = "networklevel",
indices = c("linkage density",
"weighted connectance", "weighted nestedness",
"interaction evenness"), intereven = "sum")
## -------------------------------------------------------------------------------------------------
net.stats
## ---- results="hide"------------------------------------------------------------------------------
set.seed(1234)
stream.1 <- generate_null_net(WelshStreams[, 2:18], WelshStreams.prey[, 2:17],
sims = 100, data.type = "names",
summary.type = "sum",
c.samples = WelshStreams[,1],
r.samples = WelshStreams.prey[,1],
r.weights = WelshStreams.fl)
## ---- fig.height=4, fig.width=8-------------------------------------------------------------------
op <- par(mfrow = c(1, 2))
plot_preferences(stream.1, "Rhyacophila", signif.level = 0.95, type = "counts",
xlab = "Num. of prey detections", res.order =
WelshStreams.order, p.cex = 1.5, l.cex = 0.9, lwd = 2)
plot_preferences(stream.1, "Dinocras", signif.level = 0.95, type = "counts",
xlab = "Num. of prey detections", res.order =
WelshStreams.order, p.cex = 1.5, l.cex = 0.9, lwd = 2)
par(op)
## -------------------------------------------------------------------------------------------------
export1 <- generate_edgelist(stream.1, signif.level = 0.95,
edge.cols = c("#2c7bb6", "#000000", "#d7191c"))
## ---- fig.height = 6, fig.width = 6---------------------------------------------------------------
if (requireNamespace("igraph", quietly = TRUE)) {
net.1 <- igraph::graph_from_edgelist(as.matrix(export1[, c("Resource",
"Consumer")]),
directed = TRUE)
# Add in the null modelling results
igraph::E(net.1)$obs.str <- export1$Observed
igraph::E(net.1)$test.res <- export1$Test
igraph::E(net.1)$edge.cols <- export1$edge.col
igraph::plot.igraph(net.1, layout = igraph::layout_in_circle,
edge.color = igraph::E(net.1)$edge.cols,
edge.width = sqrt(igraph::E(net.1)$obs.str))
}
## ---- fig.height=5, fig.width=8-------------------------------------------------------------------
# Create a data frame to assist with plotting
# trph.level = a simple trophic level: primary consumers = 1, predators = 2
if (requireNamespace("igraph", quietly = TRUE)) {
n.names <- data.frame(species = igraph::V(net.1)$name,
trph.level = c(1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 2, 1, 1))
# Calculate prey abundance across the six streams
abund <- as.matrix(colSums(WelshStreams.prey[, 2:17]) )
n.names <- merge(n.names, abund, by.x = "species", by.y = "row.names",
sort = FALSE)
colnames(n.names)[3] <- "Abundance"
# Specify x-coordinates for the nodes, based on their order in the Centre for Ecology and Hydrology's Coded Macroinvertebrate List, positions for the labels and abbreviated names for the nodes
n.names$x.coord <- c(1, 4.5, 3, 11, 14, 5, 2, 10, 7, 8, 12, 9, 4, 10.5, 13, 6)
n.names$lab.deg<-c(pi/2,-pi/2, pi/2, pi/2, pi/2, pi/2, pi/2, pi/2, pi/2, pi/2,
pi/2, pi/2, pi/2, -pi/2, pi/2, pi/2)
n.names$short.names <- strtrim(n.names$species, 4)
n.names$short.names[2] <- "Dinocras"
n.names$short.names[14] <- "Rhyacophila"
# Create curved edges between Dinocras & Rhyacophila so that predation in both directions can be shown clearly.
igraph::E(net.1)[13] # Confirms that edge 13 = Rhyacophila to Dinocras
igraph::E(net.1)[18] # Confirms that edge 18 = Dinocras to Rhyacophila
curve.edge <- rep(0, igraph::ecount(net.1))
curve.edge[c(13, 18)] <- 0.5
curve.arrows <- rep(0, igraph::ecount(net.1))
curve.arrows[c(13, 18)] <- 2
# Create the food web plot
igraph::plot.igraph(net.1, layout = as.matrix(n.names[, c("x.coord",
"trph.level")]),
vertex.shape = "rectangle",
vertex.size = log(n.names$Abundance),
vertex.size2 = 20, edge.curved = curve.edge,
edge.arrow.mode = curve.arrows,
edge.color = igraph::E(net.1)$edge.cols,
edge.width = sqrt(igraph::E(net.1)$obs.str),
vertex.color = "#000000",
vertex.label = n.names$short.names,
vertex.label.degree = n.names$lab.deg, vertex.label.family = "",
vertex.label.dist = rep(3, 16), vertex.label.cex = 0.75,
asp = .4)
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.