【问题标题】:How to choose a variable to display via the tooltip of ggplotly如何通过 ggplotly 的工具提示选择要显示的变量
【发布时间】:2021-04-17 09:28:31
【问题描述】:

我正在尝试做类似How to choose variable to display in tooltip when using ggplotly?的事情

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

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 的值。知道如何在此处执行此操作吗?

【问题讨论】:

    标签: r ggplot2 r-plotly


    【解决方案1】:

    您需要使用 ggplot 对象的变量/美学向量(例如 x、y、大小、填充、颜色...)设置 tooltip 参数,而不是原始数据框中的列(即你做了什么)。

    您正在将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 来阅读此内容)

    工具提示

    一个字符向量,指定在工具提示中显示哪些美学映射。默认值“all”表示显示所有美学映射(包括非官方的“文本”美学)。这里的变量顺序也将控制它们出现的顺序。例如,如果您希望 y 先,x 后,颜色最后,请使用 tooltip = c("y", "x", "color")。


    编辑: geom_line

    当您在geom_line 中使用非官方的text 美学时,它会混淆点的分组(参见link at the beginning of the question 中的讨论)。解决此问题的一种方法是通过添加 group=1 参数明确告诉 geom_line 将所有点组合在一起。

    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")
    

    【讨论】:

    • 谢谢@kikoralston,但你知道为什么你的方法在使用 geom_line 而不是 geom_point 时不起作用吗?
    • 我不知道这个。但是,如果您查看帖子中的链接,您会发现他们也讨论了这个问题。显然,当您在geom_line 中添加text=... 时,由于某种原因,它会弄乱数据点的分组。它将红线的每个点放在不同的组中,因为它只用一个点画线,所以红线不会出现。一种快速的解决方案是通过添加参数group=1 来明确告诉“geom_line”所有点应该在同一行中组合在一起。我用geom_line 示例编辑了答案。
    猜你喜欢
    • 1970-01-01
    • 2019-12-14
    • 1970-01-01
    • 2016-02-27
    • 2019-11-21
    • 1970-01-01
    • 1970-01-01
    • 2018-10-24
    • 2019-07-01
    相关资源
    最近更新 更多