【问题标题】:Show tooltip on plotly based on x-axis根据 x 轴在 plotly 上显示工具提示
【发布时间】:2021-06-20 15:50:55
【问题描述】:

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

【问题讨论】:

    标签: r ggplot2 plotly r-plotly


    【解决方案1】:

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

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

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

    【讨论】:

    • 一个快速跟进 - 无论如何调整工具提示以使日期只显示一次?一直在网上疯狂地寻找,但找不到任何方法来做到这一点
    • 我明天会再次调查这个问题 - 目前仅在移动设备上。我瘦了 ggplotly 有一个 tooltip 参数来管理这个。
    • 非常感谢。非常感谢您的帮助!
    • 不-抱歉。您可能想提出一个后续问题以获得更多关注。
    • 对于未来的读者:Here您可以找到后续问题。
    猜你喜欢
    • 2017-12-11
    • 2021-07-08
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多