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

如何在R语言ComplexUpset中修改交集矩阵的标签?

修改ComplexUpset交集矩阵的标签

方法一:使用set_names参数(推荐)

ComplexUpset的upset()函数自带set_names参数,可直接指定集合的显示名称,无需修改主题,能避免scale冲突问题:

library(ComplexUpset)

# 示例数据
df <- data.frame(
  长列名A = sample(c(TRUE, FALSE), 100, replace=TRUE),
  长列名B = sample(c(TRUE, FALSE), 100, replace=TRUE)
)

# 映射原列名到自定义标签
upset(df, c('长列名A', '长列名B'),
      set_names = c(
        '长列名A' = '这是标签A(多单词描述)',
        '长列名B' = '这是标签B(多单词描述)'
      )
)

方法二:通过主题修改刻度标签

如果需要通过upset_modify_themes调整,要在scale_x_discrete中明确使用labels参数指定映射,还可添加标签旋转避免长文本重叠:

upset(df, c('长列名A', '长列名B'),
      themes = upset_modify_themes(
        list(
          intersections_matrix = scale_x_discrete(
            labels = c(
              '长列名A' = '这是标签A(多单词描述)',
              '长列名B' = '这是标签B(多单词描述)'
            ),
            # 可选:旋转标签优化显示
            guide = guide_axis(angle = 45)
          )
        )
      )
)

你之前代码的问题

你直接将命名向量传给scale_x_discrete(),相当于重新创建了一个x轴scale,而ComplexUpset已经默认生成了x轴scale,因此出现"Scale for x is already present"的提示。正确做法是通过labels参数修改已有scale的标签,而非替换整个scale。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 06:55:20