3-core plot

One important feature of the package is that the layout can contain more nodes than the network. For example, we can use this to our advantage, to represent species with a degree larger than 3 in red:

Umod = web_of_life("M_PA_003")
I = initial(RandomInitialLayout, Umod)
for step in 1:4000
  position!(ForceDirectedLayout(2.5, 0.4), I, Umod)
end
plot(I, Umod, aspectratio=1)
scatter!(I, Umod)
N = convert(AbstractUnipartiteNetwork, convert(BinaryNetwork, Umod))
core3 = collect(keys(filter(p -> p.second == 3, degree(N))))
plot!(I, N[core3], lc=:red)
scatter!(I, N[core3], mc=:red)

Modularity

We can also use this ability to show the modular structure of a network:

N = web_of_life("M_PA_003")
I = initial(RandomInitialLayout, N)
for step in 1:2000
  position!(SpringElectric(1.2; gravity=0.75), I, N)
end

# Modularity
B, P = brim(lp(convert(BinaryNetwork, N))...)
plot(I, N, aspectratio=1)
scatter!(I, N, msw=0.0, nodefill=P, c=:Set2)