R ggvis日期滑块按月用于交互式图形
R ggvis date slider by month for interactive graph
我正在尝试使用 ggvis 制作交互式时间序列图表,滑块默认使用所有数据,但向右滑动时会按月剪切最旧的数据。数据是每月的,但我不知道如何让它发挥作用。考虑:
retail <- data.frame(Date = seq.Date(as.Date(parse_date_time("1/1/2007", "%m/%d/%y"))
, as.Date(parse_date_time("2/1/2017", "%m/%d/%y")),
by="month"),
Measure = rnorm(122))
u <- melt(retail, id="Date", measure = "Measure")
# Works for static graph
u %>%
ggvis(~Date, ~value)
# Defaults to daily slider, no data displayed
u %>%
ggvis(~Date,~value) %>%
layer_lines(input_slider(min(u$Date), max(u$Date), value=min(u$Date)))
我无法使用滑块来控制日期变量,它一直默认为每天。我注意到它在文档中默认为每日,但我找不到强制它使用非每日数据的解决方法。
为了便于阅读,让我们在外部创建 dataSlider:
library(lubridate) # for ceiling_date()
dateSlider <- input_slider(min=min(u$Date), max=max(u$Date), c(min(u$Date),
max(u$Date)), map = function(x) ceiling_date(x, "month") )
map
会将您从输入滑块中任意选择的日期更改为该月的第一天。这个映射的 x 然后定义绘图范围。
u %>%
ggvis(~Date,~value) %>%
layer_lines() %>%
scale_datetime("x", nice="month", domain = dateSlider, clamp = TRUE)
编辑:删除前后的空格:
dateSlider2 <- input_slider(min=min(u$Date), max=max(u$Date), c(min(u$Date),
max(u$Date)), map = function(x) floor_date(x, "month") )
u %>%
ggvis(~Date,~value) %>%
layer_lines() %>%
scale_datetime("x", nice="month", expand=0, domain = dateSlider2,
clamp = TRUE, override=TRUE)
我正在尝试使用 ggvis 制作交互式时间序列图表,滑块默认使用所有数据,但向右滑动时会按月剪切最旧的数据。数据是每月的,但我不知道如何让它发挥作用。考虑:
retail <- data.frame(Date = seq.Date(as.Date(parse_date_time("1/1/2007", "%m/%d/%y"))
, as.Date(parse_date_time("2/1/2017", "%m/%d/%y")),
by="month"),
Measure = rnorm(122))
u <- melt(retail, id="Date", measure = "Measure")
# Works for static graph
u %>%
ggvis(~Date, ~value)
# Defaults to daily slider, no data displayed
u %>%
ggvis(~Date,~value) %>%
layer_lines(input_slider(min(u$Date), max(u$Date), value=min(u$Date)))
我无法使用滑块来控制日期变量,它一直默认为每天。我注意到它在文档中默认为每日,但我找不到强制它使用非每日数据的解决方法。
为了便于阅读,让我们在外部创建 dataSlider:
library(lubridate) # for ceiling_date()
dateSlider <- input_slider(min=min(u$Date), max=max(u$Date), c(min(u$Date),
max(u$Date)), map = function(x) ceiling_date(x, "month") )
map
会将您从输入滑块中任意选择的日期更改为该月的第一天。这个映射的 x 然后定义绘图范围。
u %>%
ggvis(~Date,~value) %>%
layer_lines() %>%
scale_datetime("x", nice="month", domain = dateSlider, clamp = TRUE)
编辑:删除前后的空格:
dateSlider2 <- input_slider(min=min(u$Date), max=max(u$Date), c(min(u$Date),
max(u$Date)), map = function(x) floor_date(x, "month") )
u %>%
ggvis(~Date,~value) %>%
layer_lines() %>%
scale_datetime("x", nice="month", expand=0, domain = dateSlider2,
clamp = TRUE, override=TRUE)