如何在ggplot中每天添加为x轴标签

时间:2019-12-11 16:48:20

标签: r ggplot2

我想作一个图,在x轴上标记每天。

这是我的数据

my_data <- read.table(text="day value
11/15/19    0.23633
11/16/19    0.28485
11/17/19    0.63127
11/18/19    0.15434
11/19/19    0.47964
11/20/19    0.65967
11/21/19    0.48741
11/22/19    0.84541
11/23/19    0.10123
11/24/19    0.78169
11/25/19    0.23189
11/26/19    0.86665
11/27/19    0.55184
11/28/19    0.81410
11/29/19    0.25821
11/30/19    0.23576
12/1/19 0.46397
12/2/19 0.55764
12/3/19 0.95645
12/4/19 0.63954
12/5/19 0.76766
12/7/19 0.74505
12/8/19 0.65515
12/9/19 0.58222
12/10/19    0.17294", header=TRUE, stringsAsFactors=FALSE)

这是我的代码

  my_data %>% 
  ggplot(aes(day, value)) +
  geom_line() +
  scale_x_continuous(breaks = seq(1, nrow(my_data)),
                     labels = my_data$day)

它给了我这个错误:Error in as.Date.numeric(value) : 'origin' must be supplied

我想做到这一点,以便每天在x轴上显示,并且默认情况下,它只处理该数据范围内包含的几天。

2 个答案:

答案 0 :(得分:2)

尝试使用scale_x_date代替scale_x_continuous

my_data %>% 
  ggplot(aes(x = mdy(day), value)) +
  geom_line() +
  scale_x_date(date_breaks = "1 day")+
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

enter image description here

答案 1 :(得分:2)

您可以使用lubridate将数据转换为正确的日期格式:

library(lubridate)

my_data %>% 
  mutate(day = mdy(day)) %>% 
  ggplot(aes(day, value)) +
  geom_line() +
  scale_x_date(date_breaks = "1 day") +
  theme(axis.text.x = element_text(angle=90, vjust=0.5))