使工具提示出现在 plotly 对象中不同 ggplot2 方面的对应点上
Make tooltip appear on corresponding points in different ggplot2 facets in a plotly object
我正在使用 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)
当前输出Example
我正在使用 plotly
中的工具提示功能来显示与每个点相关的数据。我想扩展工具提示功能以在绘图的不同方面突出显示相同的蛋白质。
换句话说,当光标悬停在 1 个方面的一个点上时,工具提示框将显示在 [=14= 中具有相同值的所有点上] 相邻方面的列。
Here 是我的目标示例。
是否有一些方法可以自定义工具提示的行为来实现我所描述的?
使用 crosstalk
,您可以让小部件相互通信。从您的数据框中创建一个 SharedData
对象,并将 select protein
作为键。
library(crosstalk)
shared_df <- SharedData$new(dat, key = ~protein)
然后,使用 shared_df
而不是 dat
和 ggplot
。如果您 select 一个图中的一个点,它将在第二个图中突出显示匹配的数据点(protein
)。如果这符合您的需求,请告诉我。
我正在使用 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)
当前输出Example
我正在使用 plotly
中的工具提示功能来显示与每个点相关的数据。我想扩展工具提示功能以在绘图的不同方面突出显示相同的蛋白质。
换句话说,当光标悬停在 1 个方面的一个点上时,工具提示框将显示在 [=14= 中具有相同值的所有点上] 相邻方面的列。
Here 是我的目标示例。
是否有一些方法可以自定义工具提示的行为来实现我所描述的?
使用 crosstalk
,您可以让小部件相互通信。从您的数据框中创建一个 SharedData
对象,并将 select protein
作为键。
library(crosstalk)
shared_df <- SharedData$new(dat, key = ~protein)
然后,使用 shared_df
而不是 dat
和 ggplot
。如果您 select 一个图中的一个点,它将在第二个图中突出显示匹配的数据点(protein
)。如果这符合您的需求,请告诉我。