这应该非常简单(我认为),但由于某些原因我无法使其工作。我有这样的数据:
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
我正在使用如下的plotly,但它不会将x轴范围调整为我指定的自定义值。相反,使用数据范围:
library(plotly)
plot_ly(df, x = x, y = y) %>% layout(xaxis = list(range = c(as.Date('2016-08-01'), as.Date('2016-08-31'))))
另一方面,如果我有这样的数字数据:
df
x y
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
并指定这样的自定义范围,它可以正常工作:
plot_ly(df, x = x, y = y) %>% layout(xaxis = list(range = c(-5, 10)))
在使数据范围有效时我缺少什么?
答案 0 :(得分:2)
引自https://plot.ly/r/reference/#layout-xaxis-range(我添加的粗体):
range(list)设置此轴的范围。如果轴
type
是 “log”,然后你必须记录你想要的范围(例如设置 范围从1到100,设置范围从0到2)。 如果是轴type
是“日期”,然后您必须将日期转换为unix时间 毫秒(自1970年1月1日以来的毫秒数)。对于 例如,设置1970年1月1日到11月4日的日期范围, 2013年,设置范围从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"))