R 如何使用时间变量正确设置x轴的格式?

R 如何使用时间变量正确设置x轴的格式?,r,lattice,R,Lattice,考虑这个简单的例子 tibble(date = seq.Date(from = ymd('2019-01-01'), to = ymd('2019-06-01'), by = 'days')) %>% mutate(var = rnorm(n())) %>% barchart(var ~ date, data = ., horiz = FALSE) 这里很明显x轴被弄乱了。标

考虑这个简单的例子

tibble(date = seq.Date(from = ymd('2019-01-01'),
                       to = ymd('2019-06-01'), 
                       by = 'days')) %>% 
  mutate(var = rnorm(n())) %>% 
  barchart(var ~ date, data = ., horiz = FALSE)

这里很明显x轴被弄乱了。标签太多了!如何减少日期标记的数量

理想情况下,人们可以使用
scales::pretty_breaks()
函数,如
ggplot
,但在这里,我甚至无法手动操作:

myseq <- seq.Date(from = ymd('2019-01-01'),
                      to = ymd('2019-06-01'), 
                      by = '7 days') 

tibble(date = seq.Date(from = ymd('2019-01-01'),
                       to = ymd('2019-06-01'), 
                       by = 'days')) %>% 
  mutate(var = rnorm(n())) %>% 
  barchart(var ~ date, data = ., horiz = FALSE,
           scales = list(x = list(at = myseq, rot = 45)))
myseq%
变异(var=rnorm(n())%>%
条形图(var~date,data=,horiz=FALSE,
scales=list(x=list(at=myseq,rot=45)))
只需删除所有的x标签!! 你怎么认为?我只需要一个
lattice
解决方案

谢谢

ggplot()
非常好地默认了这一点,在本例中,在月份时中断:

library(tidyverse)
library(lubridate)

tibble(
  date = seq.Date(
    from = ymd('2019-01-01'),
    to = ymd('2019-06-01'), 
    by = 'days')) %>% 
  mutate(var = rnorm(n())) %>%
  ggplot() +
    geom_line(mapping = aes(x = date, y = var))
要使用lattice,首先将TIBLE存储为对象,使用
seq()
设置间隔(
at
),然后使用
as.Date()
设置
标签
并使用相同的
seq()
索引日期列

df1%
变异(var=rnorm(n())
df1%>%
条形图(var~date,data=,horiz=FALSE,
比例=
列表(x=
名单(
at=序号(1152,7),
标签=截止日期(未列出(df1[,'Date']),原产地='1970-01-01')[seq(1152,7)],
rot=45)
)
)

基于此的潜在晶格解决方案:

库(dplyr)
图书馆(lubridate)
图书馆(格子)
tb%
变异(var=rnorm(n())

dateLabs哈!!!我不能使用我的朋友。太容易了!我想释放一下lattice的力量(稍后我会回来,现在我正在用手机工作,怀里抱着一个哭泣的婴儿…很酷的东西。谢谢你知道我们是否可以直接使用磅秤包装吗?非常方便。有什么变化吗?我们可以直接在这里使用scales软件包?
df1 <- tibble(
  date = seq.Date(
    from = ymd('2019-01-01'),
    to = ymd('2019-06-01'), 
    by = 'days')) %>% 
  mutate(var = rnorm(n()))

df1 %>%
  barchart(var ~ date, data = ., horiz = FALSE,
    scales = 
      list(x = 
        list(
          at = seq(1,152,7),
          labels = as.Date(unlist(df1[,'date']), origin = '1970-01-01')[seq(1,152,7)], 
          rot = 45)
        )
  )
library(dplyr)
library(lubridate)
library(lattice)

tb <- tibble(date = seq.Date(from = ymd('2019-01-01'),
                             to = ymd('2019-06-01'), 
                             by = 'days')) %>%
      mutate(var = rnorm(n())) 

dateLabs <- seq(1, nrow(tb), by=7)

scalesList <- list(x = list(rot = 45, labels = format(tb$date, "%b-%d-%Y")[dateLabs], at = dateLabs))

tb %>%
  barchart(var ~ date, 
           data = ., 
           horiz = FALSE,
           scales = scalesList)