基于 x 轴在 plotly 上显示工具提示

Show tooltip on plotly based on x-axis

我有一个交互式图表,它显示了预测值和上下置信区间。我的图表看起来和我想要的完全一样,但是工具提示行为不是我想要的。无论如何,是否有根据光标在 x 轴上的位置显示工具提示信息,而不是根据您所在的线或置信区间的特定部分?

## libraries
library(tidyverse)
library(plotly)

## fake data
dat <- data.frame(date = seq(as.Date("1910/1/1"), as.Date("1910/1/10"), "days"),
                  pred = 1:10,
                  ci_low = seq(0, 9, 1),
                  ci_upper = seq(2, 11, 1))

## plot
p1 <- dat %>% 
  ggplot(aes(x = date, y = pred)) +
  geom_line(color = "red") +
  geom_ribbon(aes(x = date, ymin = ci_low, ymax = ci_upper), alpha = 0.2, linetype = 0)

## plotly-fy
ggplotly(p1)

例如,如果光标位于 January 08 和 3 的交叉点,我希望工具提示显示预测值和上下置信区间,所有这些都包含在该点上方。此外,如果我滚动在线,我希望也显示置信区间,如下所示。基本上我只想要一个标准的工具提示,它完全根据用户在 x 轴上的位置显示相同的信息,而不管 y 轴。

您可以将hovermode设置为“x统一”:

## libraries
# library(tidyverse)
library(plotly)

## fake data
dat <- data.frame(date = seq(as.Date("1910/1/1"), as.Date("1910/1/10"), "days"),
                  pred = 1:10,
                  ci_low = seq(0, 9, 1),
                  ci_upper = seq(2, 11, 1))

## plot
p1 <- dat %>% 
  ggplot(aes(x = date, y = pred)) +
  geom_line(color = "red", aes(group = 1, text = paste("date:", date, "\npred:", pred, "\nci_low:", ci_low, "\nci_upper:", ci_upper))) +
  geom_ribbon(aes(x = date, ymin = ci_low, ymax = ci_upper), alpha = 0.2, linetype = 0)

## plotly-fy
ggplotly(p1, tooltip = c("text")) %>%
  layout(hovermode = "x unified") %>%
  style(hoverinfo = "skip", traces = 2)

编辑: 要控制显示的悬停信息,我们可以使用 ggplotlytooltip 参数以及自定义“文本”美学。 geom_ribbon-trace 的 hoverinfo 可以通过 style().

隐藏

在情节书中你可以找到关于这个的some great examples