我正在使用ggplot2
和plotly
R程序包生成一个火山图,以可视化蛋白质差异丰度数据。
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个构面上的点上时,工具提示框将显示 在相邻构面的列中具有相同值的所有点上dat$protein
。
这是我的目标示例。
有什么方法可以自定义工具提示的行为以实现我所描述的?
使用crosstalk
,您可以使小部件彼此通信。SharedData
从数据框中创建一个对象,然后选择protein
作为键。
library(crosstalk)
shared_df <- SharedData$new(dat, key = ~protein)
然后,使用shared_df
的,而不是dat
用ggplot
。如果在一个绘图中选择一个点,它将protein
在第二个绘图中突出显示匹配的数据点(按)。如果满足您的需求,请告诉我。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句