当数据为 POSIXct 时,ggplotly() 不显示 geom_vline / geom_hline

2024-01-04

我正在尝试制作带有“时间标记”的图表。这些时间标记是某些日期的垂直线。时间数据为 POSIXct 格式。我想使用 Plotly 出色的交互界面并在其中使用我的 ggplot 对象。

问题是使用 ggplotly() 后这些“时间标记”不会显示。我已经尝试过plotly::add_segments()但它不起作用。 这是两个可重现的示例:

1. 对于非 POSIXct 数据,它工作得很好

# dummy dataset
df2 = data.frame(id = 1:10, measure = runif(10, 0, 20))
events2 = data.frame(number = c(2,3,8))
# ggplot graph
p2 = ggplot() + geom_line(data = df2, aes(x = id, y = measure))  +
  geom_vline(data = events2, aes(xintercept = events2$number), color = "red")
p2
# plotly graph that displays the geom_vline properly
ggplotly(p2)

2. 使用 POSIXct 数据无法显示正确的结果

# dummy dataset
df = data.frame(date = seq(as.POSIXct("2017-07-01", tz = "UTC", format = "%Y-%m-%d"),
                           as.POSIXct("2018-04-15", tz = "UTC", format = "%Y-%m-%d"),
                           "1 month"),
                measure = runif(10, 0, 20))
events = data.frame(date_envents = as.POSIXct(c("2017-10-12", "2017-11-12", "2018-03-15"), tz = "UTC", format = "%Y-%m-%d"))
# ggplot graph
p = ggplot() + geom_line(data = df, aes(x = date, y = measure))  +
  geom_vline(data = events, aes(xintercept = events$date), color = "red")
p
# plotly graph that does not display the geom_vline properly
ggplotly(p)

我看到了一些解决方法(例如:将垂直线添加到 ggplotly 图中 https://stackoverflow.com/questions/47754080/add-vertical-line-to-ggplotly-plot)但它很“复杂”。有没有更简单的方法来解决这个问题?

我正在使用带有 R 版本 3.5.0、RStudio 和以下软件包的 Windows 10:library(tidyverse) and library(plotly)


一个简单的解决方法是设置xintecept of the geom_vline为数字。

样本数据

df = data.frame(date = seq(as.POSIXct("2017-07-01", tz = "UTC", format = "%Y-%m-%d"),
                           as.POSIXct("2018-04-15", tz = "UTC", format = "%Y-%m-%d"),
                           "1 month"),
                measure = runif(10, 0, 20))
events = data.frame(date_envents = as.POSIXct(c("2017-10-12", "2017-11-12", "2018-03-15"), tz = "UTC", format = "%Y-%m-%d"))

code

p = ggplot() + geom_line(data = df, aes(x = date, y = measure))  +
  geom_vline(data = events, aes(xintercept = as.numeric(events$date)), color = "red")

result

ggplotly(p)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当数据为 POSIXct 时,ggplotly() 不显示 geom_vline / geom_hline 的相关文章

  • R,使用具有两种以上可能性的二项式分布

    我知道这可能是基本的 但我似乎有一个心理障碍 假设您想要计算在一个骰子上掷出 4 5 或 6 的概率 在 R 中 这很简单 sum 1 6 1 6 1 6 这给出了 1 2 这是正确答案 然而 我内心深处 可能应该保留的地方 认为我应该能够
  • 在网格中制作一个矩形图例,并标记行和列

    我有一个 ggplot 我将因子映射到填充和 alpha 如下所示 set seed 47 the data lt data frame value rpois 6 lambda 20 cat1 rep c A B each 3 cat2
  • 在包加载之前如何知道 R 中特定函数属于哪个包?

    例如 我知道许多流行的功能 例如tbl df 我通常不记得它属于哪个包 即data table or dplyr 所以我必须始终记住并加载一个包 但我做不到 tbl df除非我加载了正确的包 在 R 控制台本身加载或安装包之前 有没有办法知
  • data.table 抛出“找不到对象”错误[重复]

    这个问题在这里已经有答案了 我有一个数据表 library data table mydt lt data table index 1 10 当我在全局环境中尝试它时 我可以让它工作 但当我在调试器中或在包测试中使用它时却无法工作 问题是我
  • 从数据框中绘制多条平滑线

    我对 R 比较陌生 我正在尝试绘制从 csv 文件加载的数据框 数据由 6 列组成 如下所示 xval col1 col2 col3 col4 col5 第一列 xval 由一系列单调递增的正整数 例如 10 40 60 等 组成 其他列
  • R中IF函数的使用

    我正在短跑ifR 中的函数 但收到以下警告消息 In if runif 50 0 1 lt 0 69 the condition has length gt 1 and only the first element will be used
  • ggplot:如何限制条形图中的输出,以便仅显示最频繁出现的情况?

    我几个小时以来一直在寻找这个简单的东西 但没有结果 我有一个数据框 其中一列为变量 国家 地区 我想要两件事以下 绘制最常见的国家 地区 最常见的位于顶部 找到部分解决方案EDIT找到完整的解决方案 gt gt 重点问题是根据频率限制条形图
  • case_when 与部分字符串匹配和 contains()

    我正在使用一个数据集 其中有许多名为 status1 status2 等的列 在这些列中 它表示某人是否豁免 完整 注册等 不幸的是 豁免投入并不一致 这是一个示例 library dplyr problem lt tibble perso
  • R:如何将字符/数字转为1,NA转为0?

    有没有一种简单的方法可以将列的字符 数字变为 1 将 NA 变为 0 这里有一些示例数据 我想将其应用于 3 4 structure list Item Code c 176L 187L 191L 201L 217L 220L Item x
  • 使用数据帧的 R 中的 EWMA 波动性

    我正在尝试从一系列股票每日收益中获取 EWMA 波动性 这些收益来自一个名为base retorno diario Data IBOV ABEV3 AEDU3 ALLL3 BBAS3 BBDC3 BBDC4 1 2000 01 04 0 0
  • 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
  • 无法编译包“maps”

    当我安装 maps 包时 安装中出现警告 ld warning ignoring file Library Developer CommandLineTools SDKs MacOSX10 14 sdk usr lib libSystem
  • 条件和分组 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 我想要一个二进制变量来标
  • ggplot2:带有 geom_line 的 x 轴因子不起作用

    我想要一个线图 其中value绘制为函数expt每级一行var 这是我的数据 lines lt expt var value 1 none p 0 183065327746799 2 none p 0 254234138384241 3 n
  • R 中的数据框操作 - 将单元格向左移动并删除 NA

    我有一个数据框 其列由随机分布的值和 NA 组成 如下所示 a lt c S E NA S NA b lt c A NA M G K c lt c I NA NA NA L meh lt dataframe a b c 1 2 3 4 5
  • 使用data.table进行聚合

    经过 SO 用户的多次建议后 我终于尝试将我的代码转换为使用data table library data table DT lt data table plate paste0 plate rep 1 2 each 5 id rep c
  • 如何在R中实现countifs函数(excel)

    我有一个包含 100000 行数据的数据集 我尝试做一些countifExcel 中的操作 但速度慢得惊人 所以我想知道R中是否可以完成这种操作 基本上 我想根据多个条件进行计数 例如 我可以指望职业和性别 row sex occupati
  • 闪亮井板宽度

    library shiny library shinydashboard ui lt dashboardPage dashboardHeader dashboardSidebar dashboardBody wellPanel tags d

随机推荐

  • 将 3D 极坐标转换为笛卡尔坐标

    我一直在对这种转换背后的数学进行大量搜索 到目前为止我能想到的最好的方法是 x sin horizontal angle cos vertical angle y sin horizontal angle sin vertical angl
  • Dafny 没有条件可以触发谓词

    我有以下用于 tic tac toe 游戏的 Dafny 代码片段 用于检查玩家 1 是否在棋盘上有获胜行 predicate isWinRowForPlayer1 board array2
  • 为什么我不能在 Groovy 脚本中的 @Grab 声明之后执行方法调用?

    我正在尝试构建一个 DSL 并使用 Global AST Transform 来完成它 该脚本正在编译groovyc很好 但我希望能够让用户使用 Grab Grape 来提取 JAR 并让它作为常规脚本立即执行 然后我发现我无法正确执行此操
  • 将字符串转换为长度为 1 的列表

    我创建了一个需要列表才能正常工作的方法 但是 您可以发送列表或简单的字符串 我想将该字符串转换为包含整个字符串作为元素的列表 例如 如果我有 I am a string 我想将其转换为 I am a string 我能够这样做 I am a
  • 使用准备好的语句进行选择查询时出现 SQL 异常

    StringBuilder sqlQry new StringBuilder sqlQry append SELECT LIB PATH append FROM OBJ append INNER JOIN SRC ON SRC MBR OB
  • JavaScript 闭包如何工作?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 您如何向了解 JavaScript 闭包所包含的概念 例如函数 变量等 但不了解闭包本身
  • R 中的按行排序

    我想知道如何使用 R 在 csv 中进行按行排序 这是我拥有的以下数据 Name English Math French John 56 78 86 Sam 79 97 86 Viru 93 44 34 我想对上述数据集执行按行排序 就像下
  • 如何在 xslt 中包含 javaScript 文件

    如何在 xslt 文件中包含 导入 javaScript 文件 库 如果你需要在转换中使用javascript 例如 它包含一组在转换中调用的扩展函数 您需要使用适当的扩展元素 例如
  • “使用未经检查或不安全的操作”[重复]

    这个问题在这里已经有答案了 为什么每次编译时都会出现 使用未经检查或不安全的操作 错误 代码有什么问题吗 我从本教程复制了完全相同的代码http www mkyong com java json simple example read an
  • 如何获取matplotlib树图中形状的坐标?

    我有工作树形图 我需要获取此树形图每个形状的坐标 例如之后将它们放入 GeoJSON 中 有没有任何函数可以帮助我解决这个问题 或者我将从这个树状图的 svg 版本中获取所有坐标 With ax squarify plot ax patch
  • 无法将大型 html5 画布 POST 到服务器?

    我有一块画布 你可以在上面作画 我需要将其内容保存到服务器 以便稍后可以恢复 为了做到这一点 我xMLHttpReq send the encodeURIComponent canvasP toDataURL via a xMLHttpRe
  • 在 OpenCV C++ 中绘制一条穿过斑点的曲线

    我试图画一条穿过给定斑点的线 下面是一个给定的例子 我想要一条在水平方向上穿过多个斑点的曲线 如下所示 就如例子 import cv2 import numpy as np img cv2 imread image jpg gray cv2
  • 从 Microsoft Groove 音乐应用获取当前播放的曲目信息

    我想在我自己的应用程序中获取 Microsoft Groove 应用程序中当前播放曲目的曲目信息 我说的是 Groove APP 而不是 REST Api 我的第一个方法是尝试获得Windows Media Playback Backgro
  • R Leaflet:将多个组分配给一个图层以过滤数据并更改表示的列

    我试图在 R 传单中找到一种方法来包含覆盖按钮 该按钮可以过滤掉数据中的组 我还需要包括单选按钮 用于切换数据中表示的列 我似乎无法找到使用 addLayersControl 函数在 R 传单中执行此操作的方法 我最初认为可以将多个组添加到
  • KeyDown :识别多个键

    How can I determine in KeyDown that CtrlUp was pressed private void listView1 KeyDown object sender KeyEventArgs e if e
  • 如何通过unicode where条件选择数据?

    我想获取位于 TableAdapter 中的以下 SQL 语句的数据库 SELECT FROM Student WHERE Chinese Name Param C 调用的示例代码如下 GetDataByChinese Name 你好 但我
  • 使用 Net/http 以 JSON 格式发布 Ruby 数据

    我有这个红宝石文件 require net http require json require uri test data newAcctJson type Credit Card nickname MoreTesting rewards
  • Material2 自动完成的值不显示

    我试图让自动完成功能显示对象的一个 参数 但保存另一个参数 到目前为止它似乎没有表现出来 代码来自 Material2 Autocomplete 网站 自动完成 https material angular io components co
  • 使用@Profile决定执行测试类

    根据https stackoverflow com a 33042872 4106030 https stackoverflow com a 33042872 4106030我们不应该使用 Profile让 spring 配置文件决定是否执
  • 当数据为 POSIXct 时,ggplotly() 不显示 geom_vline / geom_hline

    我正在尝试制作带有 时间标记 的图表 这些时间标记是某些日期的垂直线 时间数据为 POSIXct 格式 我想使用 Plotly 出色的交互界面并在其中使用我的 ggplot 对象 问题是使用 ggplotly 后这些 时间标记 不会显示 我