MetaNet默认使用的是igraph
的绘图系统,其中自带的节点形状是非常有限的,只有circle
、square
、csquare
、rectangle
、crectangle
、vrectangle
、pie
、none
这几种形状,MetaNet在此基础上添加了更多常用形状,并且可以根据本文方法添加自定义形状。
- 软件主页:https://github.com/Asa12138/MetaNet 大家可以帮忙在github上点点star⭐️,谢谢🙏
- 详细英文版教程:https://bookdown.org/Asa12138/metanet_book
可以从 CRAN 安装稳定版:install.packages("MetaNet")
最新的开发版本可以在 https://github.com/Asa12138/MetaNet 中找到:
|
|
igraph节点形状
|
|

可以看到csquare
、rectangle
、crectangle
、vrectangle
等形状都是矩形的变种,主要是线的连接方式不同,有时候是难以区分的。
sphere是一个三维的球体,还是很好看的,可以模拟STRING 数据库的节点形状。
|
|

MetaNet节点形状
MetaNet在igraph的基础上添加了更多的形状,主要是diamond
、triangle1
、triangle2
、star
、polygon
等形状。
MetaNet的形状默认是跟v_group变量绑定的(查看之前的推文 3.网络注释与操作),所以当设定了多个大分组时,需要一些易于区分的形状来区分不同的组。
默认的形状分配是c(“circle”,“square”,“diamond”,“triangle1”,“triangle2”)
|
|

也可以指定star
、ploygon
等形状。
|
|

|
|

添加自定义形状
add_shape
可用于向igraph/MetaNet添加新的顶点形状,提供新形状的剪切和打印功能即可。也可以在参数中列出剪裁和/或绘图函数可以使用的绘图/顶点/边参数。
拿上述的star做一个例子,构建以下add_metanet_shape_star函数,并运行后,就可以添加上述的star形状了,并且支持color,size,frame.color等参数的修改。
|
|
我们当然也可以绘制各种奇怪的多边形:
|
|
然后用用我们新定义的随机奇怪多边形来绘制网络图:
|
|

注意,最好是用symbols()或者polygon()函数来绘制形状,其他的绘图函数比如points()也可以这样添加形状,但是这样添加的形状大小缩放的逻辑和默认形状的不一致,所以我最后也是放弃了支持ggplot和graphics默认的形状1-25,但感觉有上述这些大部分形状也够了。