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

如何在synergyfinder生成的柱状图每行旁添加对应数据值

需求说明

使用synergyfinder包的PlotMultiDrugBar函数生成条形图,并在每个条形的y轴对应位置(条形右侧)添加该条形的对应数据值。

解决方案

无需重新构建ggplot图表,直接复用PlotMultiDrugBar返回的ggplot对象,叠加geom_text即可实现需求,保证和原生图表的样式、排序逻辑一致。

完整实现代码

if (!require("BiocManager", quietly = TRUE))
  install.packages("BiocManager")

BiocManager::install("synergyfinder")
library(synergyfinder)
library(readxl)
library(ggplot2)

# 加载示例数据
data <- structure(list(block_id = c(1, 1, 1, 1, 1, 1), drug1 = c("X", 
"X", "X", "X", "X", "X"), drug2 = c("N", "N", "N", "N", "N", 
"N"), cell_line_name = c("A", "A", "A", "A", "A", 
"A"), conc1 = c(0, 10, 3.333, 1.111, 0.37, 0.123), conc2 = c(0, 
0, 0, 0, 0, 0), response = c(0, 94.7124199185235, 93.1970077742489, 
94.9121253949008, 92.6627816399623, 90.6942562299578), conc_unit = c("μM", 
"μM", "μM", "μM", "μM", "μM")), row.names = c(NA, -6L), class = c("tbl_df", 
"tbl", "data.frame"))

# 数据预处理
res <- ReshapeData(
  data = data,
  data_type = "inhibition",
  impute = TRUE,
  impute_method = NULL,
  noise = TRUE,
  seed = 1)

res <- CalculateSynergy(
  data = res,
  method = c("ZIP", "HSA", "Bliss", "Loewe"),
  Emin = NA,
  Emax = NA,
  correct_baseline = "non")

res <- CalculateSensitivity(
  data = res,
  correct_baseline = "non"
)

# 生成基础条形图
p <- PlotMultiDrugBar(
  data = res,
  plot_block = 1,
  plot_value = c("response", "ZIP_synergy", "Loewe_synergy", "HSA_synergy", "Bliss_synergy"),
  sort_by = "response",
  highlight_label_size = 4
)

# 添加数值标签到条形右侧
final_plot <- p +
  geom_text(
    aes(label = round(value, 2)),  # 保留2位小数,可按需调整
    hjust = -0.1,  # 标签位于条形右侧,调整该值可微调位置
    size = 3.5,
    color = "black"
  ) +
  expand_limits(y = max(p$data$value) * 1.15)  # 扩展y轴范围,避免标签被截断

# 展示最终图表
print(final_plot)

关键说明

  1. 复用原生图表:PlotMultiDrugBar返回标准ggplot对象,直接叠加图层即可,无需重新构建,保证样式和排序逻辑与原生图表一致。
  2. 映射变量对应:原生图表的x轴为name(对应指标名称:response、ZIP_synergy等),y轴为value(对应指标数值),geom_text直接使用这两个变量即可正确匹配数据。
  3. 标签优化:通过hjust调整标签位置,配合expand_limits扩展y轴,避免标签超出图表边界;使用round格式化数值,提升可读性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 05:22:18