R ggplot2 — построить годовую переменную одну над другой на том же графике

#r #ggplot2

#r #ggplot2

Вопрос:

Как мне отображать каждый год как отдельную строку в ggplot2 Я попробовал приведенный ниже код, но, похоже, он строится непрерывно как единый график.

 library(ggplot2)

# Dummy data
data <- data.frame(
  Date = c(as.Date("2017-01-14") - 0:13,as.Date("2016-01-14") - 0:13),
  value = runif(28) 
)
#data$Date <- strptime(data$Date, "%Y-%m-%d" )
data$Year <- as.character(year(data$Date))
data$Year <- factor(data$Year)

ggplot(data)   geom_line(aes(x = Date, y = value, group=Year, color=Year))  
  scale_x_date(date_breaks = "1 day", date_labels = "%d-%m-%y")  
  theme(axis.text.x = element_text(angle = 90))
  

введите описание изображения здесь
Но я хочу, чтобы каждый год был отдельным графиком на том же графике.

что-то вроде приведенного ниже

введите описание изображения здесь

Ответ №1:

Попробуйте этот подход, определяющий день и месяц в вашей дате. У вас беспорядок на вашем графике из-за другого года в вашей переменной даты. Настройка формата может вам помочь. Здесь код:

 library(ggplot2)
library(lubridate)
# Dummy data
data <- data.frame(
  Date = c(as.Date("2017-01-14") - 0:13,as.Date("2016-01-14") - 0:13),
  value = runif(28) 
)
data$Year <- as.character(year(data$Date))
data$Year <- factor(data$Year)
#Format month
data$MonthDay <- format(data$Date,'%b-%d')
#Plot
ggplot(data)   geom_line(aes(x = MonthDay, y = value, group=Year, color=Year))  
  theme_bw() 
  theme(axis.text.x = element_text(angle = 90))
  

Вывод:

введите описание изображения здесь

Комментарии:

1. Могу ли я каким-либо образом указать дневные перерывы в 3 или более дней для шкалы оси x. Ось x кажется слишком запутанной, когда я строю весь год. Возможно, месячная шкала?

2. @Aprilian8 Привет, дорогой. Да, вы можете, но вам придется создавать настраиваемые метки.