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

如何为R中矩阵生成的种群隔离距离散点图按区域着色?

R实现种群隔离距离图的区域配对着色方案

核心思路

先建立种群与所属区域的映射关系,统一无序种群对的区域组合表示,再为不同组合分配对应颜色,最后将颜色向量传入绘图函数的col参数。

分步代码实现

  1. 定义种群-区域映射向量
    确保向量名称与Dgeo/Dgen的行/列种群名完全一致:
# 示例:6个种群分属A、B、C三个区域
pop_region <- c("A", "A", "B", "B", "C", "C")
names(pop_region) <- c("pop1", "pop2", "pop3", "pop4", "pop5", "pop6")
  1. 生成种群对的区域组合矩阵
    用outer函数生成所有种群对的区域组合,通过pmin/pmax统一无序对的表示(比如A-B和B-A都转为"A-B"):
region_pairs <- outer(pop_region, pop_region, function(x, y) paste(pmin(x, y), pmax(x, y), sep = "-"))
  1. 提取下三角区域的组合类型
    匹配距离矩阵lower.tri对应的种群对:
pair_types <- region_pairs[lower.tri(region_pairs)]
  1. 定义颜色映射规则
    为每种区域组合指定颜色,可按需调整:
color_map <- c(
  "A-A" = "darkgreen",  # 同区域A
  "B-B" = "darkblue",   # 同区域B
  "C-C" = "darkred",    # 同区域C
  "A-B" = "olivedrab",  # A-B跨区域
  "A-C" = "orange",     # A-C跨区域
  "B-C" = "purple"      # B-C跨区域
)
  1. 生成点颜色向量并绘图
    将组合类型转换为对应颜色,代入绘图函数:
point_colors <- color_map[pair_types]

plot(Dgeo[lower.tri(Dgeo)], Dgen[lower.tri(Dgen)],
     xlab = "地理距离", ylab = "遗传距离",
     pch = 20, cex = .5, col = point_colors, ylim = c(0, 1))
  1. 添加图例(可选)
    方便识别不同颜色对应的组合:
legend("topleft", legend = names(color_map),
       col = color_map, pch = 20, cex = 0.8, title = "种群对区域组合")

注意事项

  • 种群名称必须在pop_region、Dgeo、Dgen中完全一致,否则会出现颜色匹配错误
  • 若区域数量或组合类型变化,只需调整pop_region和color_map即可适配

内容的提问来源于stack exchange,提问作者Léa Amice-Mattei

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:20:15