ggplotly 破坏了我的 geom_smooth 元素
ggplotly is breaking my geom_smooth element
我正在构建一个 NBA R Shiny 应用程序,但我 运行 遇到了一个试图制作交互式图表的小问题。我的 Geom smooth 元素在我提供的第一组代码中工作,它显示了选定团队胜利边缘的平滑平均值,但是一旦我使用 ggplotly 实现自定义工具提示,geom smooth 元素就会停止工作。
mov_plot <- function(df){
p <- df %>%
ggplot(aes(Date, Margin_of_Victory)) +
geom_col(color = 'black', alpha = 0.7, aes(fill = Outcome)) +
geom_smooth(method = 'loess', se = FALSE, color = 'grey20', alpha = 0.4) +
scale_y_continuous(breaks = c(-25, -20, -15, -10, -5, 0, 5, 10, 15, 20, 25)) +
scale_fill_manual(values = c("red", "dark green")) +
labs(x = NULL,
y = 'Margin of Victory',
title = paste0(df$FullName, ' Game Log History \n 2019-2020 NBA Season'),
subtitle = '2019-2020 NBA Season') +
theme_jacob()
ggplotly(p)
}
mov_plot <- function(df){
p <- df %>%
ggplot(aes(Date, Margin_of_Victory, text = paste(Date, '<br>',
Outcome, ' vs', Opponent, '<br>',
'Scoreline: ', team_pts, ' - ', Opp_PTS, '<br>',
'Margin of Victory: ', Margin_of_Victory))) +
geom_col(color = 'black', alpha = 0.7, aes(fill = Outcome)) +
geom_smooth(method = 'loess', se = FALSE, color = 'grey20', alpha = 0.4) +
scale_y_continuous(breaks = c(-25, -20, -15, -10, -5, 0, 5, 10, 15, 20, 25)) +
scale_fill_manual(values = c("red", "dark green")) +
labs(x = NULL,
y = 'Margin of Victory',
title = paste0(df$FullName, ' Game Log History \n 2019-2020 NBA Season'),
subtitle = '2019-2020 NBA Season') +
theme_jacob()
ggplotly(p, tooltip = c('text'))
}
下面的 2 张图片显示了当我使用第二组代码时 geom_smooth 元素消失的问题。
如果有人有 plotly 的经验并且对潜在的修复有任何想法,我将不胜感激!
在您的 geom_smooth
中尝试 formula = 'y ~ x'
,如下所示
geom_smooth(method = 'loess', se = FALSE, formula = 'y ~ x', color = 'grey20', alpha = 0.4)
由于您没有提供示例数据框,因此很难验证。
geom_smooth
层试图包含 text
美学,在您的情况下您不想要。我建议您将 text
美学从 ggplot()
父函数移动到 geom_col()
函数,以便将工具提示放在列上。
如果感兴趣的 reader 想将工具提示放在 geom_smooth
上:
text
美学不适用于 geom_smooth
,因为 geom_smooth
是一个聚合层,或者“ggplot2
生成的汇总统计数据”(https://plotly-r.com/controlling-tooltips.html#tooltip-text-ggplotly ).
ggplotly
对象有不止一个“踪迹”——第二个踪迹可能是 geom_smooth
层。您可以先保存 ggplotly
对象
来探索这些子对象
w <- ggplotly(p)
然后看w$x$data
。在geom_smooth
上,工具提示会是“连续的”,所以横轴变量和纵轴变量可能分别保存在w$x$data[[2]]$x
和w$x$data[[2]]$y
中。因此,工具提示中的文本可以填充这些向量:
# Suppress the tooltip on the columns and supply custom text to the smooth line
w %>%
style(hoverinfo = "skip", traces = 1) %>%
style(text = paste0(
"Date: ", w$x$data[[2]]$x, "\nMargin of Victory: ", w$x$data[[2]]$y
), traces = 2)
我正在构建一个 NBA R Shiny 应用程序,但我 运行 遇到了一个试图制作交互式图表的小问题。我的 Geom smooth 元素在我提供的第一组代码中工作,它显示了选定团队胜利边缘的平滑平均值,但是一旦我使用 ggplotly 实现自定义工具提示,geom smooth 元素就会停止工作。
mov_plot <- function(df){
p <- df %>%
ggplot(aes(Date, Margin_of_Victory)) +
geom_col(color = 'black', alpha = 0.7, aes(fill = Outcome)) +
geom_smooth(method = 'loess', se = FALSE, color = 'grey20', alpha = 0.4) +
scale_y_continuous(breaks = c(-25, -20, -15, -10, -5, 0, 5, 10, 15, 20, 25)) +
scale_fill_manual(values = c("red", "dark green")) +
labs(x = NULL,
y = 'Margin of Victory',
title = paste0(df$FullName, ' Game Log History \n 2019-2020 NBA Season'),
subtitle = '2019-2020 NBA Season') +
theme_jacob()
ggplotly(p)
}
mov_plot <- function(df){
p <- df %>%
ggplot(aes(Date, Margin_of_Victory, text = paste(Date, '<br>',
Outcome, ' vs', Opponent, '<br>',
'Scoreline: ', team_pts, ' - ', Opp_PTS, '<br>',
'Margin of Victory: ', Margin_of_Victory))) +
geom_col(color = 'black', alpha = 0.7, aes(fill = Outcome)) +
geom_smooth(method = 'loess', se = FALSE, color = 'grey20', alpha = 0.4) +
scale_y_continuous(breaks = c(-25, -20, -15, -10, -5, 0, 5, 10, 15, 20, 25)) +
scale_fill_manual(values = c("red", "dark green")) +
labs(x = NULL,
y = 'Margin of Victory',
title = paste0(df$FullName, ' Game Log History \n 2019-2020 NBA Season'),
subtitle = '2019-2020 NBA Season') +
theme_jacob()
ggplotly(p, tooltip = c('text'))
}
下面的 2 张图片显示了当我使用第二组代码时 geom_smooth 元素消失的问题。
如果有人有 plotly 的经验并且对潜在的修复有任何想法,我将不胜感激!
在您的 geom_smooth
中尝试 formula = 'y ~ x'
,如下所示
geom_smooth(method = 'loess', se = FALSE, formula = 'y ~ x', color = 'grey20', alpha = 0.4)
由于您没有提供示例数据框,因此很难验证。
geom_smooth
层试图包含 text
美学,在您的情况下您不想要。我建议您将 text
美学从 ggplot()
父函数移动到 geom_col()
函数,以便将工具提示放在列上。
如果感兴趣的 reader 想将工具提示放在 geom_smooth
上:
text
美学不适用于 geom_smooth
,因为 geom_smooth
是一个聚合层,或者“ggplot2
生成的汇总统计数据”(https://plotly-r.com/controlling-tooltips.html#tooltip-text-ggplotly ).
ggplotly
对象有不止一个“踪迹”——第二个踪迹可能是 geom_smooth
层。您可以先保存 ggplotly
对象
w <- ggplotly(p)
然后看w$x$data
。在geom_smooth
上,工具提示会是“连续的”,所以横轴变量和纵轴变量可能分别保存在w$x$data[[2]]$x
和w$x$data[[2]]$y
中。因此,工具提示中的文本可以填充这些向量:
# Suppress the tooltip on the columns and supply custom text to the smooth line
w %>%
style(hoverinfo = "skip", traces = 1) %>%
style(text = paste0(
"Date: ", w$x$data[[2]]$x, "\nMargin of Victory: ", w$x$data[[2]]$y
), traces = 2)