Временной график серии несколько строк оси X в качестве даты - PullRequest
0 голосов
/ 20 ноября 2018

Я знаю, что это может быть старый повторяющийся вопрос, но я искал все возможные страницы и не смог найти подходящий ответ. У меня есть данные временного ряда, как показано ниже. Я хочу построить его как ось X как время (только год или месяц и год), а остальные столбцы как y (все на одном графике). Я пробовал разные функции, такие как plot, ggplot (2), ts.plot, plot.ts, и ни одна из них не дает мне то, что мне нужно. Есть предложения?

enter image description here

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

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

Вот пример, который имитирует ваш код

library(reshape2); library(ggplot2)


df <- data.frame(Month = 1:11, Year = 2000: 2010, UY_Min = 1:11, UY_Media = 20:30, UY_90Per = 30:40)

df_long <- melt(df, id.vars = c("Month", "Year"), variable.name = "UY", value.name = 
   "Values") #convert the table from wide to long format. you can name variable.name and value.name appropriately

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

ggplot(df_long, aes(Year, The_Values, col = UY)) +
  geom_line() + 
  scale_x_continuous(breaks = seq(2000, 2010, by = 1))

enter image description here

0 голосов
/ 20 ноября 2018

Попробуйте.

вам нужно создать поле даты.Посмотрите пример ниже, у него есть некоторый фиктивный код значений, который вы можете игнорировать.Вы можете использовать часть даты (я использую lubridate), и ggplot

library(tidyverse)
library(lubridate)

mp$date <- ymd(paste(mp$year,'-',mp$month,'-','01',sep = ""))
mp$Uymax <- rnorm(48,4555,54)
mp$Uymin<- rnorm(48,5656,34)
mp$uymedian<- rnorm(48,6767,43)
mp$uy90<- rnorm(48,7676,56)
mp$uy10<- rnorm(48,7676,66)

library(tidyverse)
mp$date <- ymd(paste(mp$year,'-',mp$month,'-','01',sep = ""))

mp %>% ggplot() +
  geom_line(aes(date,Uymax,color='Uymax')) +
  geom_line(aes(date,Uymin,color='Uymin')) +
  geom_line(aes(date,uymedian,color='uymedian')) +
  geom_line(aes(date,uy90,color='uy90')) +
  geom_line(aes(date,uy10,color='uy10'))  
...