如何通过 ggplotly 的工具提示选择要显示的变量

How to choose a variable to display via the tooltip of ggplotly

我正在尝试做类似的事情

但不同之处在于我有两个时间序列,link 中建议的解决方案不起作用。所以这就是我的尝试:

library(ggplot2)
library(plotly)
library(dplyr)


t = rnorm(10, 0, 1)
x = rnorm(10, 0, 1)
y = rnorm(10, 0, 1)
z = rnorm(10, 0, 1)

df = data.frame(t,x,y,z)

p = df %>% ggplot() + geom_point(aes(t, x, text = paste(z)), color = "red") +
                  geom_point(aes(t, y), color = "blue")

ggplotly(p , tooltip = "z")

我想在悬停在点上时显示 z 的值。知道如何在这里做到这一点吗?

您需要将 tooltip 参数设置为 ggplot 对象的 variables/aesthetics 向量(例如 x、y、大小、填充、颜色...),而不是原始数据框中的列(这是你所做的)。

您正在将 z 的值映射到 geom_point 中的 text(在 ggplot 中不存在,因此您应该收到警告)。所以只需设置 tooltip = "text"(请注意,在这种情况下,蓝点将没有工具提示,因为您没有在那里设置 text 美学)

p = df %>% ggplot() + geom_point(aes(t, x, text = paste(z)), color = "red") +
  geom_point(aes(t, y), color = "blue")

ggplotly(p , tooltip = "text")

来自 ggplotly 的帮助页面(您可以通过在 R 控制台中键入 ? ggplotly 来阅读)

tooltip

a character vector specifying which aesthetic mappings to show in the tooltip. The default, "all", means show all the aesthetic mappings (including the unofficial "text" aesthetic). The order of variables here will also control the order they appear. For example, use tooltip = c("y", "x", "colour") if you want y first, x second, and colour last.


编辑:geom_line

当你在 geom_line 中使用非官方的 text 美学时,它会弄乱点的分组(参见 中的讨论)。一种解决方法是明确告诉 geom_line 通过添加 group=1 参数将所有点组合在一起。

p = df %>% ggplot() + geom_line(aes(t, x, text = paste(z), group=1), color = "red") +
  geom_line(aes(t, y), color = "blue")

ggplotly(p , tooltip = "text")