我使用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中的工具提示功能来显示与每个点相关的数据。我想扩展工具提示功能,以突出相同的蛋白质在不同方面的情节。
换句话说,当光标在一个方面的点上盘旋时,工具箱将显示在所有值相同的点上,这些点在相邻的中的 dat$protein 列中。
这里就是我的目标的一个例子。
是否有某种方式来定制工具提示的行为以达到我所描述的目的?
发布于 2019-05-25 00:03:20
使用crosstalk,您可以让小部件彼此通信。从数据框架中创建一个SharedData对象,并选择protein作为键。
library(crosstalk)
shared_df <- SharedData$new(dat, key = ~protein)然后,使用shared_df代替dat和ggplot。如果在一个图中选择一个点,它将突出显示第二个图中的匹配数据点(由protein)。如果这能满足你的需要,请告诉我。
https://stackoverflow.com/questions/56300334
复制相似问题