knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.path = "man/figures/README-", out.width = "100%" )
The igplot
package offers a simplified version of the plot.igraph
that creates network plots from igraph
objects. The main function provided by the package is, unsurprisingly, igplot::igplot
which is a wrapper around the base::plot
function.
You can install igplot
with:
remotes::install_github("baruuum/igplot")
The package is designed to plot igraph
objects faster than the igraph::plot.igraph
function. This means that less options are available. However, for moderate to large graphs, the igplot
function should be faster than the plot.igraph
function.
The basic usage of the package is described below:
Instead of using the plot
method for igraph
objects,
library(igplot) # make graph set.seed(123) g = igraph::erdos.renyi.game(10, .35) # make plot with igraph package set.seed(42) plot( g, layout = igraph::layout_with_fr, vertex.color = "blue", vertex.label = NA, vertex.size = 5 )
you can use the igplot
function, where plotting options are specified as a list
with the plot_opts
option.
``````r
set.seed(42) igplot( g, layout = "layout_with_fr", plot_opts = list( v_cex = 2, e_lwd = .8 ) )
The available plotting options can be found by typing `?igplot::igplot`. ## Speed comaprison Here's a short speed comparison between these two functions run on MacOS with a 2.4 GHz 8-Core Intel Core i9 processor: ```r compare_plot = function(n) { g = igraph::erdos.renyi.game(n, .01) set.seed(111) tictoc::tic() pdf("tmp.pdf", width = 5, height = 5) plot(g, layout = igraph::layout_with_fr) dev.off() x = tictoc::toc(quiet = TRUE) set.seed(111) tictoc::tic() igplot(g, layout = "layout_with_fr", outfile = "tmp.pdf", width = 5, height = 5) y = tictoc::toc(quiet = TRUE) return(c(igraph = x$toc - x$tic, igplot = y$toc - y$tic)) } # create plots of different sizes gsize = c(100, 500, 1000, 2500, 5000, 10000, 20000) res = sapply(gsize, compare_plot) # colors cols = c(scales::alpha("blue", .6), scales::alpha("red", .6)) # create graph par(mfrow = c(1, 1)) plot(gsize, type = "n", xlim = c(min(gsize), max(gsize)), ylim = c(0, max(res)), xlab = "No. of Vertices", ylab = "Ellapsed Time (seconds)") points(gsize, res[1, ], pch = 19, col = cols[1], type = "b") points(gsize, res[2, ], pch = 19, col = cols[2], type = "b") legend("topleft", c("plot.igraph", "igplot"), lty = 1, col = cols, pch = 19)
The igplot
package provides also some functions to rotate graphs in order to make them comparable and functions to plot subsets of the vertices. See vignette by typing vignette("igplot")
into the R
console for more examples.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.