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)