在ggplotly中设置工具提示参数时,geom_line无法绘制 [英] geom_line not plotting when tooltip argument set in ggplotly
问题描述
我试图在我闪亮的应用程序中使用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 geom
s 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屋!