前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >手把手教你画漂亮的和弦图(下)

手把手教你画漂亮的和弦图(下)

作者头像
百味科研芝士
发布2019-05-23 22:55:15
2.4K0
发布2019-05-23 22:55:15
举报
文章被收录于专栏:百味科研芝士

当然不能忘记弦图绘制神包—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绘图的道路上越走越远~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 百味科研芝士 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档