作者:李誉辉 四川大学在读研究生
往期精彩:
接上一篇:R_circlize包_和弦图(一)
link弦可见
在需要强调某些relation时,需要高亮对应的弦,一般有4种高亮方式:
设置弦边缘颜色(前面已经介绍了),
设置不同的透明度,
或只显示某些弦,其它全是透明的灰色
通过
link.visible
参数指定要显示的弦,其它都不显示,可以用逻辑矩阵(对于邻接矩阵)或逻辑向量(对于邻接列表)进行指定
library(circlize)
# 通过指定不同的颜色进行高亮
chordDiagram(mat, grid.col = grid_col, row.col = c("#FF000080", "#00FF0010", "#0000FF10"))
circos.clear()
# 通过指定透明色给某些在范围之外的relation
col_mat[mat < 12] <- "#00000000" # relation < 12则变为透明色
chordDiagram(mat, grid.col = grid_col, col = col_mat) #
circos.clear()
# 通过函数同时指定透明色和高亮色,对邻接列表数据源也适用
col_fun <- function(x) {ifelse(x < 12, "#00000000", "#FF000080") }# relation小于12则为透明色,反之为#FF000080石榴红
chordDiagram(mat, grid.col = grid_col, col = col_fun, transparency = 0.7)
circos.clear()
# 事实上,所有颜色矩阵或颜色生成函数中色彩都是绘制在图形中的,只是程序内部将其透明度设置为了1,
# 通过3列特殊数据框指定的颜色,其缺失的颜色的relation将不会画出
col_df <- data.frame(c("S1","S2", "S3"), c("E5", "E6", "E4"),
c("#FF000080", "#00FF0080", "#0000FF80"))
chordDiagram(mat, grid.col = grid_col, col = col_df)
circos.clear()
# 对于邻接列表数据源,高亮弦调整更简单,只需要设置要高亮的颜色,其它为透明色就行了
cols <- rand_color(nrow(df))
cols[df[[3]] < 10] <- "#00000000" # 将df中第3列,即relation列,列值小于10的都更新为透明色HEX色值
chordDiagram(df, grid.col = grid_col, col = cols)
# 通过link.visible参数调整
cols <- rand_color(nrow(df))
chordDiagram(df, grid.col = grid_col, link.visible = df[[3]] >= 10) # 只显示df第3列大于10的弦
circos.clear()
弦在同一个sector上的顺序调整
有时候为了方便查询,需要将弦link按宽窄顺序排列,可以用参数link.sort
和link.decreasing
设定:
link.sort = TRUE
表示设置顺序,默认为了好看自动调整弦的顺序,指定该参数后,