Presenting large graph (>10000 nodes; > 10000 edges) using igraph package with Fruchterman-Reingold layout algorithm. Some outlier nodes will make the visualization difficult, 99% nodes huddled together, while 1% outlier nodes located far away. For example, 99.9% nodes locate between 0 and 10, but 0.1% nodes locate outside 10000. The problem is how to control these outlier nodes to present the all nodes.
Here is an example, in which the 0.2% outlier nodes make the full presentation difficult.
> library(igraph)
> set.seed(12)
> ig <- erdos.renyi.game(12000,1/10000,directed=TRUE,loops=FALSE)
> ig.layout <- layout_with_fr(ig)
> apply(ig.layout,2,quantile,c(0,0.001,0.01,0.1,0.9,0.99,0.999,1))
[,1] [,2]
0% -54.7584289 -58.192821
0.1% -49.8806632 -51.090376
1% -29.7822097 -33.073435
10% -0.2196407 -1.170996
90% 10.1564691 10.513665
99% 2026.5245335 737.739440
99.9% 16433.7302032 13168.400710
100% 22614.7986797 22284.309659
One way to "control" the outliers is to get rid of them. This will reduce your initial problem, but you will still be stuck with a big graph that is hard to visualize. But let's deal with one thing at a time. First, the outliers.
Unfortunately, you set the seed after you generated the graph. I will move the
set.seedstatement first so that the results will be reproducible.I get a result comparable to yours. More to the point, the graph is badly warped by the outliers.
But what are these outliers?
Your graph has one very large component and quite a few small components. The "outliers" are the nodes in the small, disconnected components. My suggestion is that if you want to see the graph, eliminate these small components. Just look at the big component.
Now the layout is more reasonable.
Now the "outliers" are gone and we see the core of the graph. You have a different problem now. It is hard to look at 10500 nodes and make sense of it, but at least you can see this core. I wish you luck with taking the exploration further.