You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 18:19:55