R plot_ly() 向时间数据添加垂直线
R plot_ly() adding vertical lines to time data
我想在我的情节中添加一条特殊日期的垂直线。我正在使用 R 中 plotly
包中的 plot_ly()
函数。
p <- plot_ly(dt.allDataFvsS, x = dt.allDataFvsS$date, y = dt.allDataFvsS$meanDifference, mode = 'lines',
type = "scatter", line = list(color = " #007d3c")) %>%
layout(title = "Average Price Difference Forward vs. Spot", xaxis = list(title = "Date"),
yaxis = list(title = "EUR / MWh"))
日期具有以下形式:例如"2018-10-01" ("Y-M-D")
我的剧情是这样的:
PLOT
所以,我的问题是 如何在日期 "2018-10-01"
得到一条黑色垂直线?
是否也可以在每年的开头有竖线?还是每年每个季度(1 月 - 4 月 - 7 月 - 10 月)?
如果有人能帮助我,我会很高兴吗?不幸的是,在网上浏览了一天后,我找不到任何有用的东西。
由于没有提供数据来重现您的问题,我建议使用 add_trace()
函数的下一种方法,您可以在其中定义线的坐标:
p <- plot_ly(dt.allDataFvsS, x = dt.allDataFvsS$date, y = dt.allDataFvsS$meanDifference, mode = 'lines',
type = "scatter", line = list(color = " #007d3c")) %>%
add_trace(x =as.Date("2018-10-01"),type = 'scatter', mode = 'lines',
line = list(color = 'black'),name = '') %>%
layout(title = "Average Price Difference Forward vs. Spot", xaxis = list(title = "Date"),
yaxis = list(title = "EUR / MWh"))
如果可行,请告诉我!
这是基于shapes
的另一种方法,而不是添加另一条轨迹(缩小时可以看到差异+垂直线没有图例项):
library(plotly)
dates <- seq(from = as.Date("2018-08-01"), to = as.Date("2018-12-31"), by = 1)
dt.allDataFvsS <- data.frame(date = dates, meanDifference = sin(seq_along(dates)*0.1))
vline <- function(x = 0, color = "red") {
list(
type = "line",
y0 = 0,
y1 = 1,
yref = "paper",
x0 = x,
x1 = x,
line = list(color = color)
)
}
p <- plot_ly(dt.allDataFvsS, x = dt.allDataFvsS$date, y = dt.allDataFvsS$meanDifference, mode = 'lines',
type = "scatter", line = list(color = " #007d3c")) %>%
layout(title = "Average Price Difference Forward vs. Spot", xaxis = list(title = "Date"),
yaxis = list(title = "EUR / MWh"))
p %>% layout(shapes = list(vline(as.Date("2018-10-01"))))
基于this answer。
我想在我的情节中添加一条特殊日期的垂直线。我正在使用 R 中 plotly
包中的 plot_ly()
函数。
p <- plot_ly(dt.allDataFvsS, x = dt.allDataFvsS$date, y = dt.allDataFvsS$meanDifference, mode = 'lines',
type = "scatter", line = list(color = " #007d3c")) %>%
layout(title = "Average Price Difference Forward vs. Spot", xaxis = list(title = "Date"),
yaxis = list(title = "EUR / MWh"))
日期具有以下形式:例如"2018-10-01" ("Y-M-D")
我的剧情是这样的:
PLOT
所以,我的问题是 如何在日期 "2018-10-01"
得到一条黑色垂直线?
是否也可以在每年的开头有竖线?还是每年每个季度(1 月 - 4 月 - 7 月 - 10 月)?
如果有人能帮助我,我会很高兴吗?不幸的是,在网上浏览了一天后,我找不到任何有用的东西。
由于没有提供数据来重现您的问题,我建议使用 add_trace()
函数的下一种方法,您可以在其中定义线的坐标:
p <- plot_ly(dt.allDataFvsS, x = dt.allDataFvsS$date, y = dt.allDataFvsS$meanDifference, mode = 'lines',
type = "scatter", line = list(color = " #007d3c")) %>%
add_trace(x =as.Date("2018-10-01"),type = 'scatter', mode = 'lines',
line = list(color = 'black'),name = '') %>%
layout(title = "Average Price Difference Forward vs. Spot", xaxis = list(title = "Date"),
yaxis = list(title = "EUR / MWh"))
如果可行,请告诉我!
这是基于shapes
的另一种方法,而不是添加另一条轨迹(缩小时可以看到差异+垂直线没有图例项):
library(plotly)
dates <- seq(from = as.Date("2018-08-01"), to = as.Date("2018-12-31"), by = 1)
dt.allDataFvsS <- data.frame(date = dates, meanDifference = sin(seq_along(dates)*0.1))
vline <- function(x = 0, color = "red") {
list(
type = "line",
y0 = 0,
y1 = 1,
yref = "paper",
x0 = x,
x1 = x,
line = list(color = color)
)
}
p <- plot_ly(dt.allDataFvsS, x = dt.allDataFvsS$date, y = dt.allDataFvsS$meanDifference, mode = 'lines',
type = "scatter", line = list(color = " #007d3c")) %>%
layout(title = "Average Price Difference Forward vs. Spot", xaxis = list(title = "Date"),
yaxis = list(title = "EUR / MWh"))
p %>% layout(shapes = list(vline(as.Date("2018-10-01"))))
基于this answer。