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

如何修改交集大小与集合大小的标签?如何以总行数占比显示二者?

ComplexUpset 图表定制:标签修改与百分比显示

一、修改交集大小与集合大小的标签

1. 交集大小标签

交集大小的标签有两种修改方式:

  • 直接修改base_annotations的列表键名,比如把原代码中的'Size'替换为'交集数量',作为该注释面板的标题。
  • 在intersection_size图层后添加ylab(),自定义y轴标签,同时保留或调整原有的主题设置。

2. 集合大小标签

集合大小(右侧边缘值)的数值轴为x轴(因位置设为right),修改方式如下:

  • 在set_sizes的图层链中添加xlab(),替换原代码中的ylab(""),比如设置为xlab("集合大小")。

二、显示总行数的百分比

1. 交集大小显示为百分比

要将交集大小转为总行数的百分比,需结合aes_percentage()和刻度格式化:

  • 添加geom_text显示百分比文本,用aes_percentage(relative_to='all')自动计算占比。
  • 用scale_y_continuous(labels=scales::percent)将y轴刻度转为百分比格式,需提前加载scales包。

2. 集合大小显示为百分比(含边缘值)

集合大小的边缘值本身就是单个集合的TRUE总数,转为总行数百分比的方法:

  • 保留原代码中geom_text(aes(label=!!aes_percentage(relative_to='all')))来显示百分比文本。
  • 添加scale_x_continuous(labels=scales::percent)将x轴刻度转为百分比格式。

修改后的完整代码示例

{
  library(ggplot2)
  library(ComplexUpset)
  library(scales)  # 用于百分比格式化
}

set_size(8, 3)

upset(
  head(M1_BinaryMatrix, 1000),
  colnames(M1_BinaryMatrix),
  base_annotations = list(
    '交集数量' = intersection_size(mode='inclusive_intersection')
      + geom_bar(stat='count', fill='steelblue')
      + geom_text(aes(label=!!aes_percentage(relative_to='all')), hjust=-0.1, color='black')
      + ylab("占总行数比例")
      + scale_y_continuous(labels=percent)
      + theme(axis.text.y=element_blank())
  ),
  sort_intersections_by='ratio',
  name = "",
  annotations = list(), 
  themes = upset_themes,
  stripes=c(alpha('grey90', 0.45), alpha('white', 0.3)),
  labeller = identity,
  height_ratio = 0.5,
  width_ratio = 0.3,
  sort_sets='ascending',
  wrap = FALSE,
  set_sizes=(
    upset_set_size(position='right')
      + geom_bar(stat='count', fill='darkorange3')
      + geom_text(aes(label=!!aes_percentage(relative_to='all')), hjust=1.1, stat='count', color='white')
      + xlab("集合大小(占总行数比例)")
      + scale_x_continuous(labels=percent)
      + theme(axis.text.x = element_blank())
  ),
  mode = "inclusive_intersection",
  queries = list(),
  guides = NULL,
  encode_sets = TRUE,
  matrix = intersection_matrix(    
    geom=geom_point(
      shape='square',
      size=4
    ),
    segment=geom_segment(
      linetype='solid'
    ), 
    outline_color=list(
      active='darkorange3',
      inactive='grey70'
    )
  ),
  n_intersections='all'
) +
  labs(title = "",
       caption = "")

关键说明

  • base_annotations的列表名称会作为注释面板的顶部标题,ylab/xlab对应轴标签。
  • aes_percentage(relative_to='all')会自动计算当前统计值相对于数据集总行数的百分比。
  • scales::percent用于将轴上的小数数值转换为百分比格式,必须提前加载scales包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 11:40:23