在ggplotly中设置工具提示参数时,geom_line无法绘制 [英] geom_line not plotting when tooltip argument set in ggplotly

查看:240
本文介绍了在ggplotly中设置工具提示参数时,geom_line无法绘制的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在我闪亮的应用程序中使用plotty进行交互式视觉效果.但是,在尝试向图表添加自定义工具提示时遇到了问题.如果我在ggplotly()中设置了tooltip参数,则我的geom_line()在输出中将被忽略,但工具提示会起作用.

I am trying to use plotly for interactive visuals in my shiny app. 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.

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

这给了我这个:

如果我将data =aes()调用从ggplot调用移至单个geom s,则这些行仍未显示:

If I move the data = and aes() calls from the ggplot call to the individual geoms then The lines still aren't shown:

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

如果仅从geom_line()函数中删除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()的同时使自定义工具提示起作用?

How do I get the custom tooltip to work while still plotting my geom_line()?

我的数据:

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

推荐答案

我认为这些行没有显示出来,因为ggplot不知道将哪些点连接在一起.我试图绘制第一个graph(不使用ggplotly转换为可绘制对象),&收到以下警告:

I think the lines weren't showing up because ggplot didn't know which points to connect together. I tried to plot the first graph (without converting to plotly object using ggplotly), & got the following warning:

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

在第一组代码中添加group = site对我来说很有效:

Adding group = site to first set of code worked for me:

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

这篇关于在ggplotly中设置工具提示参数时,geom_line无法绘制的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆