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

如何在UpSetR绘图中设置Y轴标题并修改字体样式

解决方案

用UpSetR实现需求

UpSetR并非基于ggplot2的绘图系统,无法直接用ggplot2的ylab()函数修改轴标题,需通过自身参数配置;物种名斜体可通过set.names传入表达式实现:

library(UpSetR)

# 构建数据集
mydataframe <- data.frame(
  Orthogroup = c("OG0000000", "OG0000001", "OG0000002", "OG0000003", "OG0000004", "OG0000005", "OG0000006", "OG0000007", "OG0000008", "OG0000009", "OG0000010", "OG0000011", "OG0000012"),
  Mdong = c(9,3,7,0,3,0,5,3,8,14,0,4,6),
  Midriensis = c(6,8,9,0,6,0,5,6,6,4,0,8,9),
  Mcrassostreae = c(4,7,3,5,11,3,9,6,10,3,0,4,5)
)

# 转换为0/1矩阵
mydataframe[mydataframe > 0] <- 1

# 定义斜体的物种名(用expression包裹实现斜体)
italic_species <- c(expression(italic(Mdong)), expression(italic(Midriensis)), expression(italic(Mcrassostreae)))

# 绘图:指定ylab参数修改Y轴标题,set.names传入斜体名称,保留交集高亮
upset(
  mydataframe,
  sets = rev(colnames(mydataframe)[2:ncol(mydataframe)]),
  keep.order = TRUE,
  order.by = "freq",
  set.names = rev(italic_species),  # 对应sets的顺序,反转保持一致
  ylab = "Number of genes shared",  # 直接在这里设置Y轴标题
  queries = list(
    list(query = intersects, params = list("Mdong","Midriensis"), color = "red", active = TRUE)
  )
)

用ComplexUpset实现(更灵活的ggplot2版本)

如果后续需要更多自定义操作,推荐使用基于ggplot2的ComplexUpset,配置逻辑更直观:

library(ComplexUpset)
library(ggplot2)

# 数据集和0/1转换同上,直接绘图
upset(
  mydataframe,
  colnames(mydataframe)[2:ncol(mydataframe)],
  keep.order = TRUE,
  sort_intersections = by_freq,
  queries = list(
    upset_query(intersects=c('Mdong','Midriensis'), fill='red')
  ),
  # 自定义轴标题和物种名样式
  base_annotations = list(
    'Intersection size' = geom_bar(aes(fill=intersection)),
    ylab('Number of genes shared')
  ),
  set_name = function(name) {
    # 对物种名应用斜体
    element_text(face='italic')
  }
)

关键说明

  • UpSetR中:ylab是upset()函数的内置参数,不能单独调用ggplot的ylab();物种名斜体通过expression(italic(...))生成表达式,传给set.names。
  • ComplexUpset基于ggplot2,所有文本样式可通过theme或专属参数直接配置,自定义空间更大。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 03:14:53