ggplotly 破坏了我的 geom_smooth 元素

2024-01-02

我正在构建一个 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'))
  
}

下面的两张图片显示了当我使用第二组代码时 geom_smooth 元素消失的问题。

如果有人有情节经验并且对潜在的修复有任何想法,我将不胜感激!


The geom_smooth层试图包括text审美,这在你的情况下是你不想要的。我建议您移动text审美来自于ggplot()父函数geom_col()函数,以便将工具提示放在列上。

如果有兴趣的读者想将工具提示放在geom_smooth反而:

The text审美不适合geom_smooth因为geom_smooth是一个聚合层,或“由ggplot2" (https://plotly-r.com/controlling-tooltips.html#tooltip-text-ggplotly https://plotly-r.com/controlling-tooltips.html#tooltip-text-ggplotly). The ggplotly对象有多个“痕迹”——第二条痕迹可能是geom_smooth层。您可以通过首先保存来探索这些子对象ggplotly object

w <- ggplotly(p)

然后看着w$x$data. On geom_smooth,工具提示将是“连续的”,因此水平轴变量和垂直轴变量可能保存在w$x$data[[2]]$x and 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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ggplotly 破坏了我的 geom_smooth 元素 的相关文章

  • 如何动态地将 sliderInput 添加到闪亮的应用程序中?

    使用闪亮 我上传一个 csv 文件 并根据列名称 我需要向 ui 添加滑块 sidebarPanel fileInput file1 Upload CSV File to Create a Model accept c text csv t
  • R 改变构面的顺序

    我正在尝试将方面的顺序从 BA SLG 更改为 SLG BA 我发现了与此类似的问题 但我认为我的解决方案可能不起作用 因为我已经在Excel中汇总了数据 因此 我的数据框可能会有所不同 无论如何 我尝试实现这个但无济于事 df2 lt f
  • R - 基于列名称的子集

    我的数据框有超过 120 列 变量 我想根据列名称创建子集 例如 我想创建一个子集 其中列名称包含字符串 心情 这可能吗 我一般用 SubData lt myData grep whatIWant colnames myData 我很清楚
  • 如何像在facet_grid中一样在facet_wrap中定位条带标签

    我想在使用时删除多余的条带标签facet wrap 并用两个变量进行分面 并且都是自由尺度的 例如 这个facet wrap下图的版本 library ggplot2 dt lt txhousing txhousing year in 20
  • 在 R 上安装 TDA 包时出错:目标“diag.o”的配方失败

    使用 Ubuntu 16 04 和 R 3 4 1 安装 R 包 TDA 时收到错误消息 它似乎与制作 CGAL diag cpp 和 或 diag o 最后的完整错误打印输出 有关 我仔细看了这个 在 R 上安装 TDA 包时出错 htt
  • 获取包含矩阵行内最大值的列名称,该矩阵在数组内包含单独的最大值

    例如给出 dim1 lt c P PO C T dim2 lt c LL RR R Y dim3 lt c Jerry1 Jerry2 Jerry3 Q lt array 1 48 c 4 4 3 dimnames list dim1 di
  • R 数据结构的运算效率

    我想知道是否有任何关于操作效率的文档R 特别是那些与数据操作相关的 例如 我认为向数据框添加列是有效的 因为我猜您只是向链接列表添加一个元素 我想添加行会更慢 因为向量保存在数组中C level你必须分配一个新的长度数组n 1并将所有元素复
  • 条件和分组 mutate dplyr

    假设我有以下每个抽屉库存增加的数据 gt socks year drawer nbr sock total 1990 1 2 1991 1 2 1990 2 3 1991 2 4 1990 3 2 1991 3 1 我想要一个二进制变量来标
  • 在 RGL 中将立方体绘制到 3D 散点图中

    我正在尝试向 3D 散点图添加较小的立方体 网格 具有指定边长 我希望立方体位于原点 我该怎么做呢 我已经玩过cube3d 但我似乎无法将立方体正确定位 也无法使其成为网格 因此我可以看到它包含的数据点 这是我所拥有的 library rg
  • 是否有weighted.median()函数?

    我正在寻找类似形式的东西weighted mean 我通过搜索找到了一些解决方案 这些解决方案写出了整个函数 但希望有一些更用户友好的解决方案 以下软件包都有计算加权中位数的函数 aroma light isotone limma cwhm
  • 使用“assign()”为列表项分配值

    首先了解一些背景 我写了一个中缀函数 本质上取代了这个习惯用法 x length x 1 lt y 或者简单地说x lt append x y 对于向量 这里是 lt function x y xcall lt substitute x x
  • 如何在R中分离两个图?

    每当我运行这段代码时 第一个图就会简单地覆盖前一个图 R中有没有办法分开得到两个图 plot pc title main abc xlab xx ylab yy plot pcs title main sdf xlab sdf ylab x
  • 更改ggplot2中的字体

    曾几何时 我改变了我的ggplot2字体使用windowsFonts Times windowsFont TT Times New Roman 现在 我无法摆脱这一切 在尝试设置family in ggplot2 theme 当我用不同的字
  • 如何在R中实现countifs函数(excel)

    我有一个包含 100000 行数据的数据集 我尝试做一些countifExcel 中的操作 但速度慢得惊人 所以我想知道R中是否可以完成这种操作 基本上 我想根据多个条件进行计数 例如 我可以指望职业和性别 row sex occupati
  • R:根据列名部分匹配计算行平均值

    我有一个看起来像这样的表 er er 1 as as 1 as 2 rt op a 1 6 90 8 6 4 87 b 1 8 56 7 5 5 9 c 8 7 6 4 5 9 6 d 1 0 8 6 4 3 6 e 9 7 2 4 3 8
  • 上传到 Shiny 服务器后在 R 中解压文件

    我正在尝试在我们的本地服务器上使用 Shiny 来构建一个应用程序 允许用户上传包含 ESRI shapefile 和关联文件的 zip 文件 Shiny 服务器的 fileInput 可以获取数据 并且当它这样做时 它会将其存储在临时目录
  • 使用操作按钮在闪亮的 R 中添加包含现有数据框的新行

    我正在构建一个闪亮的表单 它将从 textInput 字段获取数据 并将这些输入与文本文件 将通过文件输入上传 组合起来 并在主面板中显示输出 有一个操作按钮用于第一次更新数据 从文本输入中获取数据并与处理后的文本文件合并 我添加了另一个操
  • 将文件名附加到 R 中的数据框

    我想将文件名附加到我的表中 但它似乎并没有真正起作用 我正在做的是迭代文件名列表 打开它们 将所有数据附加到一个数据帧 对于每个附加文件 我想添加其文件名 我希望将其附加到每一行 以便稍后当我查看数据时 我会知道给定行源自哪个文件 但似乎并
  • 在 R 中显示变量的精确值

    gt x lt 1 00042589212565 gt x 1 1 000426 如果我想打印的确切值x 我该怎么办呢 抱歉 如果这是一个愚蠢的问题 我尝试在谷歌上搜索 R 和 精确 或 圆形 但我得到的只是有关如何舍入的文章 先感谢您 所
  • 如何使用合并或替换来更新 R 中具有多列的表

    我想做一些与这个问题非常相似的事情 如何使用 merge 更新 R 中的表 https stackoverflow com questions 3190118 how to use merge to update a table in r

随机推荐