如何修改vegan包nestedtemp()绘图的颜色并添加标签?
嵌套性分析绘图自定义:修改颜色与添加标签
我使用R语言的vegan包对数据集进行嵌套性分析,代码可正常生成嵌套性温度值(10.24168)和嵌套性图(矩阵填充度0.4),但希望修改绘图的默认红色,并为细胞类型(H、B等)和类别(Np、Pn等)添加标签,请问该如何实现?
解决方案
你可以通过两种方式实现需求:手动绘制自定义矩阵图,或在默认绘图基础上补充自定义元素,以下是具体实现:
方案一:手动绘制(灵活性更高)
直接基于nestedtemp输出的排序矩阵绘图,可自由调整颜色、标签和布局:
library(vegan) # 原始数据处理 bc <- data.frame( cell_layer = c("H", "B", "A", "G", "O"), Np = c(0, 1, 1, 0, 0), Pn = c(1, 1, 0, 0, 1), Npn = c(0, 1, 0, 0, 0), Npnp = c(0, 1, 0, 0, 0), Pnp = c(1, 0, 0, 0, 0), Pnpn = c(0, 1, 0, 0, 0) ) bc_t <- t(bc) out_bc_t <- nestedtemp(bc_t) # 提取排序后的嵌套矩阵 sorted_mat <- out_bc_t$mat # 调整绘图边距,预留标签空间 par(mar = c(6, 6, 2, 2)) # 绘制矩阵,自定义颜色(白色为空白,深蓝色为存在) image(1:ncol(sorted_mat), 1:nrow(sorted_mat), t(sorted_mat), col = c("white", "#003366"), xlab = "类别", ylab = "细胞类型", xaxt = "n", yaxt = "n") # 关闭默认轴 # 添加x轴类别标签(垂直显示避免重叠) axis(1, at = 1:ncol(sorted_mat), labels = colnames(sorted_mat), las = 2, cex.axis = 0.8) # 添加y轴细胞类型标签(垂直显示) axis(2, at = 1:nrow(sorted_mat), labels = rownames(sorted_mat), las = 2, cex.axis = 0.8) # 在图上方标注嵌套性温度和填充度 mtext(paste("嵌套性温度:", round(out_bc_t$temp, 4), " | 矩阵填充度:", out_bc_t$fill), side = 3, line = 0.5, cex = 0.9)
方案二:基于默认plot函数修改
如果想保留vegan默认绘图的框架,仅修改颜色和补充标签:
# 用默认plot函数绘制,修改填充颜色 plot(out_bc_t, kind = "incid", col = c("white", "#003366")) # 补充x轴类别标签 axis(1, at = 1:ncol(sorted_mat), labels = colnames(sorted_mat), las = 2, line = 1, cex.axis = 0.8) # 补充y轴细胞类型标签 axis(2, at = 1:nrow(sorted_mat), labels = rownames(sorted_mat), las = 2, line = 1, cex.axis = 0.8)
关键说明
- 颜色修改:通过
col参数指定矩阵中0(空白)和1(存在)对应的颜色,可替换为任意颜色名称或十六进制代码(如"darkgreen"、"#FF6B6B"等)。 - 标签添加:使用
axis()函数手动添加自定义标签,las = 2设置标签垂直显示,避免长标签重叠;par(mar)调整边距确保标签完整显示。
内容的提问来源于stack exchange,提问作者Rosalin August
相关产品推荐
相关产品推荐

