gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 23:36:24 27 4
gpt4 key购买 nike

我正在尝试制作带有“时间标记”的图形。这些时间标记是某些日期的垂直线。时间数据为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)



我已经看到了一些解决方法(例如: Add vertical line to ggplotly plot),但是它“很复杂”。有没有更简单的方法来解决这个问题?

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

最佳答案

一个简单的解决方法是将xinteceptgeom_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"))




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


结果

ggplotly(p)


enter image description here

关于r - 当数据为POSIXct时,ggplotly()不显示geom_vline/geom_hline,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52735018/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com