如何修改交集大小与集合大小的标签?如何以总行数占比显示二者?
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
相关产品推荐
相关产品推荐

