如何调整Complex Upset图的字体大小与列标签方向?
解决Complex Upset图字体放大与列标签对齐问题
1. 全局放大所有元素字体大小
要统一提升图表所有元素的字体可读性,需在upset_default_themes的全局文本设置中指定size参数,同时补充强化坐标轴标题、刻度的字体大小(避免部分元素未被全局覆盖):
# where 'sets' comes from colnames() in the matrix (upset(data, sets, min_size=1, name='Multiple Sets', wrap=TRUE, # 全局设置字体家族与大小 themes=upset_default_themes( text=list(element_text(family='Trebuchet MS', size=14)) # 按需调整size数值 ), base_annotations = list( 'Intersection size' = intersection_size( mapping=aes(fill=3Plus) ) + scale_fill_manual(values = c('YES'='orange','NO'='black')) + ylab("Count of Intersection") + theme( legend.position = "none", # 单独强化坐标轴文本大小(可选,若全局设置已生效可省略) axis.title = element_text(size=16), axis.text = element_text(size=14) ) ), set_sizes=( upset_set_size() + ylab('Count of Set') + theme( axis.title = element_text(size=16), axis.text = element_text(size=14) ) ) ))
2. 修复列标签旋转后的对齐问题
你之前错误地在intersection_size()中直接传递text参数,正确方式是在theme()中调整axis.text.x属性,设置旋转角度与对齐参数:
'Intersection size' = intersection_size( mapping=aes(fill=MCNFlag) ) + scale_fill_manual(values = c('YES'='orange','NO'='black')) + ylab("Count of Intersection") + theme( legend.position = "none", # 旋转x轴标签并调整对齐 axis.text.x = element_text( angle=90, hjust=1, # 右对齐避免标签溢出图表 vjust=0.5, # 垂直居中对齐 size=14 # 匹配全局字体大小 ) )
说明:axis.text.x专门控制交集列的标签样式,hjust=1和vjust=0.5是旋转标签的标准对齐参数,不会触发"未知参数"错误。
内容的提问来源于stack exchange,提问作者JamesW
相关产品推荐
相关产品推荐

