R_circlize包_和弦图(一)

640?wx_fmt=gif


作者:李誉辉 四川大学在读研究生 


往期精彩: 

R_插值_拟合_回归_样条


[参考来源](https://jokergoo.github.io/circlize_book/book/the-chorddiagram-function.html)


par参数:

  • lty: line type. 可以是数字或者字符,
    (0 = “blank”, 1 = “solid” (default), 2 = “dashed”, 3 = “dotted”, 4 = “dotdash”, 5 = “longdash”, 6 = “twodash”)

  • lwd: line width. 默认是 1, 设置线宽的放大倍数.

  • cex: 设置文字和符号相对于默认值的大小, 为一个比例数值. 当使用 mfrow 或 mfcol 也会改变该值.

  • mai: 以 inch 为单位的图像边距, c(bottom, left, top, right).

  • mar: 以行数来表示图像边距, c(bottom, left, top, right), 默认是 c(5, 4, 4, 2) + 0.1.

  • mfcol, mfrow: 调整图形输出设备中子图排列的向量, c(nrow, ncol),
    mfcol 让子图按照列优先排列, 相应的, mfrow 让子图按照行优先排列.当设置 mfcol mfrow 后, cex 和 mex 的基本单位都相应减小.

和弦图

和弦图简介

和弦图长什么样子:
和弦图在线

(http://circos.ca/intro/tabular_visualization/)
和弦图即可以反映2类变量之间的相互作用关系,也可以反映相互作用强度,这是其它图比不了的
和弦图的弦link的宽度代表所连接的两个对象的相互作用强弱,link越宽,则相互作用越强
和弦图常用于绘制国家之间的贸易往来量,城市之间的航班往来量,还有细胞和基因数据可视化(这个领域不了解)

邻接表(和弦图数据源)

邻接表强调2类对象之间的相互作用强弱,分为邻接矩阵(adjacency matrix)和邻接列表(adjacency list)

  • 邻接矩阵为表示矩阵格式,邻接矩阵的元素映射到弦link的宽度,表示所在行名称和列名称的相互作用强弱

  • 邻接列表通常前2列分别为2类对象,第3列映射到弦link的宽度,表示前2列对应行的元素相互作用强弱
    circlize内置的和弦图绘制函数
    chordDiagram()对这2种邻接表都支持,但对于后续参数修改,使用邻接列表更方便
    邻接表:

library(circlize)

# 编一个邻接矩阵
mat <- matrix(1:9, 3) # 第1列不是id列,通过行命名替代
rownames(mat) <-  letters[1:3]
colnames(mat) <-  LETTERS[1:3]
mat

# 编一个邻接列表
df <- data.frame(from = letters[1:3], to = LETTERS[1:3], value = 1:3)
df

640?wx_fmt=jpeg

可以使用内置函数generateRandomBed()产生随机基因类数据:
语法:
generateRandomBed(nr = 10000, nc = 1, fun = function(k) rnorm(k, 0, 0.5), species = NULL)
参数解释:

  • nr 表示指定产生数据行数

  • nc 表示指定产生数据列数, 数据值的列

  • fun 表示指定参数随机数的方法

  • species 表示种类,传递给read.cytoband

library(circlize)

set.seed(999)
bed = generateRandomBed() # 默认参数
head(bed)

bed = generateRandomBed(nr = 200, nc = 4)
nrow(bed)

bed = generateRandomBed(nc = 2, fun = function(k) sample(letters, k, replace = TRUE)) # 默认产生1000行数据
head(bed)

640?wx_fmt=jpeg

初步绘图

输入邻接表数据,默认参数,自动绘图,
构造数据

library(circlize)

# 构造一个邻接矩阵
set.seed(999)
mat <- matrix(sample(18, 18), 3, 6) # 3行6列的矩阵
rownames(mat) <- paste0("S", 1:3) # 生成行名
colnames(mat) <- paste0("E", 1:6) # 生成列名

# 构造一个邻接列表
df <- data.frame(from = rep(rownames(mat), times = ncol(mat)), # 第1列对象
                 to = rep(colnames(mat), each = nrow(mat)), # 第2列对象
                 value = as.vector(mat),  # 第3列前2列对象相互作用强度
                 stringsAsFactors = FALSE)
df

640?wx_fmt=jpeg

  • 8
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值