当然不能忘记弦图绘制神包—circlize
安装circlize包,安装包直接用install函数即可,安装好之后,需要加载,利用library函数即可,这里就不在重复叙述。
1
数据生成
这里我们同样使用上期的数据集,如下:
2
画出关系边界框
什么是边界框?我们看下面一张图就明白了。
便出现下图:
从上图我们可以看出,就是给相互关系在外层描边,将形成相互关系的强弱,描出来。画出这种描边效果的,需要增加一个link的参数。
link.lwd 控制描边的宽度
link.lty 控制描边的样式
link.border 控制描边的颜色
3
选择性绘制边界框
当我们想要只给某一个对象进行展示相互作用的区域绘制边界框时,我们该怎么做呢?
首先,我们自定义一个颜色矩阵,很明显,这里我们定义了一个一行的颜色为黑色的矩阵。接着我们对矩阵进行行名和列名重命名,使得他们名字保持一致。最后,把颜色矩阵赋值到link.border参数上面去。结果如下:
4
关系强度排序
针对同一个对象,其他对象与之关联的强度有高有低,如何对作用强度,进行排序呢?当然,默认情况下,是针对行名的对象进行排序,在此处便是E1-E6,即对每一个E中的对象,按照S1-S3相结合的强弱排序。这个时候是加入了link.sort和 link.decreasing 参数。
当为link.sort = TRUE, link.decreasing = TRUE,可以看到为降序排列,图中E4即是从左到右降序(强度)。
当为link.sort = TRUE, link.decreasing = F,可以看到为升序排列,图中E4即是从左到右升序(强度)。
图如下:,另外title函数为加标题。
5
有向关系矩阵,添加箭头
当我们的关系网络为有向矩阵是,我们需要添加箭头。
先上代码:
图长什么样呢?
就会生成如下的结果
我们首先定义了一个arr.col的数据框:
这个数据框每一行,代表一种指向关系,比如第一行代表S1和E5之间用黑色箭头链接,但是具体的谁指向谁,则是由direction参数来确定,当direction为1时,代表,由行指向列,即从S到E,当direction为-1,代表由列指向行,即从E到S。
当direction为-1时,如下:
好了,今天关于弦图的绘制先讲到这,祝大家在R绘图的道路上越走越远~