【问题标题】:How can I make ggplotly show hover tooltips for a geom_rect series?如何让 ggplotly 显示 geom_rect 系列的悬停工具提示?
【发布时间】:2020-12-12 23:23:41
【问题描述】:

我正在尝试为多个雇主的个人工资增长创建交互式可视化。我正在使用 geom_rect 系列来显示工资期和工资信息。当我应用 ggplotly 函数时,默认情况下不显示悬停工具提示,并且我找不到启用它们的方法。

如何在 geom_rect 上启用工具提示?

数据:

df <- data.frame(
"From" = seq(as.Date("2016-01-01"), as.Date("2026-01-01"), by = 14),
"To" = seq(as.Date("2016-01-01"), as.Date("2026-01-01"), by = 14)+13,
"Employer" = c(rep("Current employer",130),rep("Future employer",131)),
"Salary" = seq(50000,250000,length.out = 261)
)

可见:

library(ggplot2)
library(dplyr)
library(plotly)
ggplotly(
ggplot(data = df) +
  geom_rect(aes(xmin = From, xmax = To,
                ymin = Employer, ymax = Employer,
                colour = Employer,
                size = Salary))
)

输出(无悬停文本):

请注意,我还向related question 询问了有关将范围滑块应用于此问题的问题。

【问题讨论】:

  • 这是一个不同的问题。那个问题是关于禁用 geom_rect 上的工作工具提示。我的问题是关于在 geom_rect 上启用缺少的工具提示。
  • 好的,我删除了链接评论

标签: r ggplot2 data-visualization ggplotly


【解决方案1】:

在这种情况下,geom_rect() 是一种特殊的美学元素,与经典的plotly 元素(如点或条)相比。这就是为什么即使启用tooltip 你也无法获得它们。您需要创建标签,以便它们可以被识别为 ggplotly() 的已知元素,就像最初提到的那样。代码如下:

library(ggplot2)
library(dplyr)
library(plotly)
#Code
ggplotly(ggplot(data = df) +
  geom_rect(aes(xmin = From, xmax = To,
                  ymin = Employer, ymax = Employer,
                  colour = Employer,
                  size = Salary))+
  geom_line(aes(x = From,
                y = Employer,
                group = 1,
                text = paste("Date: ",
                             From, "<br>Salary: ", Salary)),
            color='transparent') + 
  geom_point(aes(x = From,
                 y = Employer,
                 text = paste("Date: ", From, "<br>Salary: ",
                              Salary)),
             color='transparent'),tooltip = 'text')

输出:

【讨论】:

  • 感谢您的解决方案。这是一个有用的解决方法。但是,我相信工具提示可以应用于 geom_rect 元素。例如: 但是,我知道在某些情况下可以将工具提示应用于 geom_rect。例如:ggplotly( ggplot()+ geom_rect(aes(xmin = 1, xmax = 2, ymin = 1, ymax = 2, text = paste("here is some text"))), tooltip = 'text' )
  • @Luke23 是的,有时可以工作,但正如情节网页中所述,ggplot2 中的一些美学元素在情节中无法正常工作,这就是为什么你可以使用点、线等元素来破解情节或酒吧。无论如何,我希望这段代码可以帮助您解决问题,如果有任何不清楚的地方,请随时提及,很高兴为您提供帮助!
猜你喜欢
  • 2020-01-28
  • 2021-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-03
  • 2012-10-20
  • 2013-04-07
相关资源
最近更新 更多