r - 使工具提示出现在绘图对象中不同 ggplot2 方面的对应点上
问题描述
我正在使用ggplot2
Rplotly
包生成火山图,以可视化蛋白质差异丰度数据。
library(ggplot2)
library(plotly)
nVals <- 80
nFacets <- 2
#example dataset
proteins <- rep(paste0('protein_', c(1:(nVals / nFacets))), nFacets)
set.seed(1)
dat <- data.frame(log_FC = c(rnorm(nVals*0.8, 0, 1), rnorm(nVals*0.2, 0, 12)),
log_Pval = abs(rnorm(nVals, mean=0, sd=0.01)),
facet = rep(paste0('Cell line ', 1:nFacets), nVals / nFacets),
protein = proteins[order(proteins)])
#make ggplot2 object
p <- ggplot(dat, aes(y = log_Pval, x = log_FC, text = protein)) +
facet_wrap(~ facet) +
geom_point()
#convert p to plotly object with plotly::ggplotly
ggplotly(p)
电流输出示例
我正在使用工具提示功能plotly
来显示与每个点关联的数据。我想扩展工具提示功能以在绘图的不同方面突出显示相同的蛋白质。
换句话说,当光标悬停在 1 个 facet 中的某个点上时,工具提示框将显示 dat$protein
在相邻 facet 的列中具有相同值的所有点上。
这是我的目标的一个例子。
是否有某种方法可以自定义工具提示的行为以实现我所描述的内容?
解决方案
使用crosstalk
,您可以让小部件相互通信。SharedData
从您的数据框中创建一个对象,然后选择protein
作为键。
library(crosstalk)
shared_df <- SharedData$new(dat, key = ~protein)
然后,使用shared_df
而不是dat
with ggplot
。如果您在一个图中选择一个点,它将protein
在第二个图中突出显示匹配的数据点 (by )。请让我知道这是否满足您的需求。
推荐阅读
- mongodb - mongodb mongo-go-driver Decimal128 中的高低值是多少以及如何使用它们来创建新的小数
- java - 更改android搜索视图左侧后退箭头按钮的颜色
- java - PSQLException: ERREUR: realtion "table" 不存在
- wolfram-mathematica - Mathematica 中的方程简化问题
- perl - 通过 ftp 上传文件到特定远程目录失败
- xml - groovy xmlSlurper 检查同一级别内的更多字段
- java - 如何从房间数据库中存储和检索图像
- zenodo - 我正在尝试在我的 ubuntu 18.04 上安装节点 js 7.4.0。并且 ./configure 可以正常工作。问题出在“make”命令中
- java - 我想将 Mysql Blob 转换为字符串,然后将字符串转换回 Blob
- javascript - 为什么在尝试使用 Node 将图像上传到 S3 时出现此连接错误?