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

使用gggenomes绘图:实现序列标签的对齐与分色显示

解决方案

步骤1:拆分序列ID为两列

首先将seqs数据框中的seq_id拆分为species_name和sequence_name两列,避免原格式的空格干扰:

library(tidyr)
library(gggenomes)

# 拆分seq_id,保留sequence_name中的空格(若存在)
seqs <- seqs %>%
  separate(seq_id, into = c("species_name", "sequence_name"), 
           sep = " ", extra = "merge")

步骤2:自定义标签绘制(替代geom_bin_label)

geom_bin_label无法实现多色多列对齐需求,我们直接利用gggenomes自动生成的序列垂直位置变量.y,用两个geom_text分别绘制物种名和序列名:

p <- gggenomes(seqs = seqs, genes = genes, links = links) +
  geom_seq() +
  # 注意fill映射的列名与genes数据框一致(原数据为orthogroup小写)
  geom_gene(aes(fill = orthogroup), stroke = 0.5) +
  # 红色物种名,右对齐形成左列
  geom_text(aes(x = -0.8, y = .y, label = species_name), 
            color = "red", fontface = "italic", size = 5, hjust = 1) +
  # 蓝色序列名,右对齐形成右列,x坐标与物种名拉开间距
  geom_text(aes(x = -0.2, y = .y, label = sequence_name), 
            color = "blue", fontface = "italic", size = 5, hjust = 1) +
  geom_link(offset = 0.25) +
  theme(axis.text.x = element_text(size = 15)) +
  labs(fill = "Orthogroups")

# 扩展x轴左侧范围,防止标签被截断
p <- p + xlim(-1.0, max(seqs$end) * 1.05)

关键说明

  • 借助gggenomes内置的.y变量,确保标签与对应序列垂直对齐。
  • 通过hjust = 1设置文本右对齐,让同一列的标签边缘整齐对齐。
  • 调整x参数可灵活控制两列的间距,xlim用于适配标签显示范围。

内容的提问来源于stack exchange,提问作者Lilly

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 13:47:33