简体   繁体   English

在ggplotly中设置tooltip参数时,geom_line不绘图

[英]geom_line not plotting when tooltip argument set in ggplotly

I am trying to use plotly for interactive visuals in my shiny app. 我试图在我闪亮的应用程序中使用plotly交互式视觉效果。 However, I am running into a problem when trying to add a custom tooltip to the graph. 但是,在尝试向图表添加自定义工具提示时遇到问题。 If i set the tooltip argument in ggplotly() then my geom_line() is ignored in my output but the tooltip works. 如果我在ggplotly()设置tooltip参数,那么我的输出中会忽略我的geom_line() ,但工具提示有效。

Here is a MRE: 这是一个MRE:

library(shiny)
library(ggplot2)
library(plotly)
library(tidyquant) #only using the palette_dark() function
library(magrittr)

graph <- data %>%
  ggplot(aes(date, result, text = paste0("Site: ", site, "\n", 
                                     "Quarter: ", quarter, "\n", 
                                     "Year: ", year, "\n", 
                                     "Result: ", result))) +
  facet_wrap(~site) +
  geom_point(color = palette_dark()[1]) +
  geom_line(color = palette_dark()[1]) +
  theme_bw() 

 ggplotly(graph, 
          tooltip = "text")

This gives me this: 这给了我这个: 在此输入图像描述

If I move the data = and aes() calls from the ggplot call to the individual geom s then The lines still aren't shown: 如果我将ggplot调用中的data =aes()调用ggplot到各个geom那么仍然没有显示这些行:

graph <- ggplot() +
  facet_wrap(~site) +
  geom_point(data = data, 
             aes(date, result, 
                 text = paste0("Site: ", site, "\n", 
                               "Quarter: ", quarter, "\n",
                               "Year: ", year, "\n", 
                               "Result: ", result)),
             color = palette_dark()[1]) +
  geom_line(data = data, 
            aes(date, result, 
                text = paste0("Site: ", site, "\n", 
                              "Quarter: ", quarter, "\n",
                              "Year: ", year, "\n", 
                              "Result: ", result)),
            color = palette_dark()[1]) +
   theme_bw() 

ggplotly(graph, 
     tooltip = "text") 

This gives me the same output with the tooltips still working. 这给了我相同的输出,工具提示仍然有效。 However, now I receive two warnings: 但是,现在我收到两个警告:

Warning: Ignoring unknown aesthetics: text 警告:忽略未知的美学:文本

Warning: Ignoring unknown aesthetics: text 警告:忽略未知的美学:文本

If I remove the text= argument from just the geom_line() function then the lines are plotted but the tooltip no longer works: 如果我从geom_line()函数中删除text=参数,则会绘制线条,但工具提示不再起作用:

在此输入图像描述

Question: 题:

How do I get the custom tooltip to work while still plotting my geom_line() ? 如何在绘制geom_line()同时让自定义工具提示工作?

My data: 我的数据:

data <- structure(list(site = c("Site 1", "Site 1", "Site 1", "Site 1", 
                                    "Site 2", "Site 2", "Site 2", "Site 2", 
                                    "Site 3", "Site 3", "Site 3", "Site 3", 
                                    "Site 4", "Site 4", "Site 4", "Site 4", 
                                    "Site 5", "Site 5", "Site 5", "Site 5"), 
                           parameter = c("Testing Parameter", "Testing Parameter",
                                         "Testing Parameter", "Testing Parameter", 
                                         "Testing Parameter", "Testing Parameter", 
                                         "Testing Parameter", "Testing Parameter", 
                                         "Testing Parameter", "Testing Parameter", 
                                         "Testing Parameter", "Testing Parameter", 
                                         "Testing Parameter", "Testing Parameter",
                                         "Testing Parameter",  "Testing Parameter", 
                                         "Testing Parameter", "Testing Parameter"),
                           year = c(2016, 2017, 2017, 2017, 2016, 2017, 2017, 2017, 
                                    2016, 2017, 2017, 2017, 2016, 2017, 2017, 2017, 
                                    2016, 2017, 2017, 2017), 
                           quarter = c(4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 
                                       3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L), 
                           result = c(22.87, 31.78, 54.76, 44.3, 27.78, 34.04, 53.27, 
                                      46.83, 19.83, 34.05, 31.18, 35.7,  24.11, 33.57, 
                                      47.5, 40.53, 29.4, 34.6, 53.18, 46.16), 
                           count = c(3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
                                     3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), 
                           date = structure(c(17075, 17167, 17257, 17348, 17075, 
                                              17167, 17257, 17348, 17075, 17167, 
                                              17257, 17348, 17075, 17167,  17257, 
                                              17348, 17075, 17167, 17257, 17348), 
                                            class = "Date")), 
                      class = c("tbl_df", "tbl", "data.frame"), 
                      row.names = c(NA, -20L), 
                      .Names = c("site", "parameter", "year", "quarter", "result", 
                                 "count", "date"))

I think the lines weren't showing up because ggplot didn't know which points to connect together. 我认为线条没有显示,因为ggplot不知道哪些点连接在一起。 I tried to plot the first graph (without converting to plotly object using ggplotly ), & got the following warning: 我试图绘制第一个graph (没有使用ggplotly转换为plotly对象),并得到以下警告:

> graph
geom_path: Each group consists of only one observation. Do you need to adjust the
group aesthetic?

Adding group = site to first set of code worked for me: group = site添加到为我工作的第一组代码:

library(ggplot2); library(dplyr)

graph <- data %>%
  ggplot(aes(x = date, y = result, 
             text = paste0("Site: ", site, "\n", 
                           "Quarter: ", quarter, "\n", 
                           "Year: ", year, "\n", 
                           "Result: ", result),
             group = site)) +
  facet_wrap(~site) +
  geom_point() + # default palette since I don't have tidyquant
  geom_line() +
  theme_bw()

plotly::ggplotly(graph, tooltip = "text")

plotly

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM