我知道这可能是一个重复的老问题,但是我搜索了所有可能的页面,但找不到合适的答案。我有一个如下的时间序列数据。我想将其绘制为x轴作为时间(仅是年份或月份和年份两者),并将其余列绘制为y(全部绘制在一个图中)。我尝试了不同的功能,例如plot,ggplot(2),ts.plot,plot.ts,但是它们都没有提供我所需的功能。有什么建议吗?
答案 0 :(得分:1)
首先,我建议将您的数据从宽格式转换为长格式,以便在一个图中绘制多个变量。这是一个很好的tutorial,可以为您提供帮助。
这是一个模仿您的代码的示例
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))
答案 1 :(得分:0)
尝试一下。
您需要创建一个日期字段。请参阅下面的示例,它具有一些您可以忽略的伪值代码。您可以使用日期部分(我使用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'))