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

使用ggplot2 geom_tile绘制互斥/共现图时排序轴标签致异常

解决ggplot2 geom_tile绘制染色体臂共现/互斥三角图的错位问题

我来帮你搞定这个三角图错位的问题!你的核心问题在于x轴和y轴的刻度排序没有完全对应,加上没有过滤掉非三角区域的配对,导致tile位置混乱。下面是一步步的修复方案:

1. 统一轴的排序规则

首先,我们需要让x轴和y轴使用完全一致的事件排序,只是y轴反转显示,这样才能保证每个tile的位置准确对应:

library(gtools)
library(dplyr)
library(ggplot2)

# 读取你的数据集(假设你已经加载了cooccur.table)
# cooccur.table <- read.table("你的数据路径", header = T, stringsAsFactors = F)

# 对所有事件(Event1和Event2的并集)进行混合排序,得到统一的顺序
all_events <- mixedsort(unique(c(cooccur.table$Event1, cooccur.table$Event2)))

# 设置x轴为升序的因子
cooccur.table$Event1 <- factor(cooccur.table$Event1, levels = all_events)
# 设置y轴为降序的因子(反转all_events,保证和x轴刻度一一对应)
cooccur.table$Event2 <- factor(cooccur.table$Event2, levels = rev(all_events))

2. 过滤出三角区域的配对

因为你要的是三角图,我们需要保留非重复的配对区域(比如下三角或上三角),避免重复显示对称的tile:

# 给每个事件分配排序索引,方便筛选三角区域
event_order <- tibble(Event = all_events, order = 1:length(all_events))

# 合并索引到原数据集,获取每个事件的排序位置
cooccur.table <- cooccur.table %>%
  left_join(event_order, by = c("Event1" = "Event")) %>%
  rename(order1 = order) %>%
  left_join(event_order, by = c("Event2" = "Event")) %>%
  rename(order2 = order)

# 筛选下三角区域(根据需求可改成order1 < order2保留上三角)
cooccur_tri <- cooccur.table %>% filter(order1 > order2)

3. 绘制正确的三角图

现在用过滤后的数据集绘图,就能得到对齐准确的三角热图了:

ggplot(cooccur_tri, aes(x = Event1, y = Event2, fill = label)) + 
  geom_tile(colour = "black") + 
  coord_equal() + 
  # 自定义颜色(保留你的原设置,可按需调整)
  scale_fill_manual(values = c("#08d9d6", "#e84a5f", "#ffffff"), 
                    labels = c("共现", "互斥", "无")) + 
  # 调整主题,优化显示效果
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1, size = 8), 
        axis.text.y = element_text(hjust = 1, size = 8), 
        legend.position = "right", 
        axis.line = element_line(size = 0.2), 
        axis.ticks = element_blank(),
        panel.background = element_blank()) +
  labs(x = "染色体臂事件1", y = "染色体臂事件2", fill = "关系类型")

关键说明

  • 统一x/y轴的排序是解决错位的核心:只有两个轴的刻度一一对应,tile才能准确落在对应的交叉位置。
  • 筛选三角区域可以避免重复显示对称配对(比如A-B和B-A),让图更简洁清晰。
  • 如果你的数据里没有对称配对,也可以跳过过滤步骤,直接用修正排序后的原数据集绘图。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 06:27:50