这应该非常简单(我认为),但由于某种原因我无法让它工作。我有这样的数据:
df
x y
1 2016-08-12 1
2 2016-08-13 2
3 2016-08-14 3
4 2016-08-15 4
5 2016-08-16 5
str(df)
'data.frame': 5 obs. of 2 variables:
$ x: Date, format: "2016-08-12" "2016-08-13" ...
$ y: int 1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)
我按如下方式使用绘图,但它不会将 xaxis 范围调整为我指定的自定义值。相反,使用数据的范围:
library(plotly)
plot_ly(df, x = x, y = y) %>% layout(xaxis = list(range = c(as.Date('2016-08-01'), as.Date('2016-08-31'))))
Run Code Online (Sandbox Code Playgroud)
另一方面,如果我有这样的数字数据:
df
x y
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
Run Code Online (Sandbox Code Playgroud)
并指定一个像这样的自定义范围,它工作得很好:
plot_ly(df, x = x, y = y) %>% layout(xaxis = list(range = c(-5, 10)))
Run Code Online (Sandbox Code Playgroud)
在使数据范围发挥作用时我缺少什么?
引用自https://plot.ly/r/reference/#layout-xaxis-range(粗体是我添加的):
range(列表) 设置该轴的范围。如果轴
type是“log”,那么您必须取所需范围的对数(例如,要将范围设置为1 到100,请将范围设置为0 到2)。如果轴type是“日期”,则必须将日期转换为以毫秒为单位的unix时间(自1970年1月1日以来的毫秒数)。例如,要设置从 1970 年 1 月 1 日到 2013 年 11 月 4 日的日期范围,请将范围设置为 0 到 1380844800000.0 每个命名列表都具有下面列出的一个或多个键。
因此,您可以将日期转换为以毫秒为单位的 Unix 时间:
plot_ly(df, x = x, y = y) %>%
layout(xaxis = list(
range =
c(as.numeric(as.POSIXct("2016-08-01", format="%Y-%m-%d"))*1000,
as.numeric(as.POSIXct("2016-08-31", format="%Y-%m-%d"))*1000),
type = "date"))
Run Code Online (Sandbox Code Playgroud)