如何在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
相关产品推荐
相关产品推荐

