如何调整UpSetR绘图行序,按集合频率反向排列?
UpSetR行顺序调整解决方案
要让UpSetR的行(垂直排列的集合列表)按横轴集合频率排序,核心是强制使用自定义的集合顺序,之前操作无效的原因是忽略了keep.order参数,具体步骤如下:
生成目标集合顺序
- 按集合频率自动排序:计算每个集合的出现次数,按频率降序生成集合名称向量(高频集合排前,对应你要的
Fentanyl在顶的需求)sets_order <- names(sort(colSums(df), decreasing = TRUE)) - 手动指定顺序:直接定义固定的集合排列顺序
sets_order <- c("Fentanyl", "Morphine", "Midazolam", "Lorazepam")
- 按集合频率自动排序:计算每个集合的出现次数,按频率降序生成集合名称向量(高频集合排前,对应你要的
绘图时启用强制顺序
在upset()函数中传入目标集合顺序,同时必须添加keep.order = TRUE(否则UpSetR会自动覆盖自定义排序,使用默认的集合大小排序逻辑):library(UpSetR) upset(df, sets = sets_order, keep.order = TRUE, # 可选:调整图表标签 mainbar.y.label = "交集数量", sets.x.label = "集合大小")
执行后就能实现Fentanyl位于行顶部、Lorazepam位于底部的效果,行顺序严格遵循你指定的排列逻辑。
内容的提问来源于stack exchange,提问作者docalexh
相关产品推荐
相关产品推荐

