基于 x 轴在绘图上显示工具提示

时间:2021-03-23 23:04:36

标签: r ggplot2 plotly r-plotly

我有一个交互式图表,其中显示了预测值和上下置信区间。我的图表看起来和我想要的完全一样,但是工具提示行为不是我们想要的。无论如何,是否可以根据光标在 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)

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

enter image description here

1 个答案:

答案 0 :(得分:2)

您可以将 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)

result

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

在剧情书中,您可以找到关于此的some great examples