library(ggplot2)
library(reshape2)

今天实验主要任务有二:

  1. 继续画平行坐标图,画到满意为止;
  2. 尝试将数据转置,使时间序号按行横向排列;

平行坐标图

读取数据,节假日,非节假日1,非节假日2,非节假日

tmljjr <- read.csv("D:\\data\\thesis\\201610\\tmldata\\tmljjr.csv",header = T)
tmlfjjr <- read.csv("D:\\data\\thesis\\201610\\tmldata\\tmlfjjr.csv",header = T)
tmlfjjr1 <- read.csv("D:\\data\\thesis\\201610\\tmldata\\tmlfjjr1.csv",header = T)
tmlfjjr2 <- read.csv("D:\\data\\thesis\\201610\\tmldata\\tmlfjjr2.csv",header = T)

节假日

ggplot(tmljjr,aes(tmljjr$时间序号,tmljjr$机动车当量,group=tmljjr$日期,color=tmljjr$日期))+geom_line(alpha=2/5)+
  geom_smooth(method = "loess",span=0.1)+
  xlab("时间序号")+ylab("车流量")+scale_color_hue("日期")
ggplot(tmljjr,aes(tmljjr$时间序号,tmljjr$机动车当量,group=tmljjr$日期,color=tmljjr$日期))+
  # geom_line(alpha=2/5)+
  geom_smooth(method = "loess",span=0.1,se = F)+
  xlab("Timestamp")+ylab("Traffic Volume")+scale_color_hue("Date")+
  scale_x_continuous(breaks = seq(0,288,24))+
  scale_y_continuous(breaks = seq(0,120,20))+
  theme_bw()+
  guides(color=FALSE)
ggsave(file="D:\\交大云同步\\论文\\小论文\\4_基于KNN方法的短时交通流序列非对称损失预测\\绘图\\节假日.jpg",width=7.29,height=4.5,dpi=600)

非节假日全

ggplot(tmlfjjr,aes(tmlfjjr$时间序号,tmlfjjr$机动车当量,group=tmlfjjr$日期,color=tmlfjjr$日期))+geom_line(alpha=2/5)+
  geom_smooth(method = "loess",span=0.1)+
  xlab("时间序号")+ylab("车流量")+scale_color_hue("日期")

非节假日1

ggplot(tmlfjjr1,aes(tmlfjjr1$时间序号,tmlfjjr1$机动车当量,group=tmlfjjr1$日期,color=tmlfjjr1$日期))+geom_line(alpha=2/5)+
  geom_smooth(method = "loess",span=0.1)+
  xlab("时间序号")+ylab("车流量")+scale_color_hue("日期")

非节假日2

ggplot(tmlfjjr2,aes(tmlfjjr2$时间序号,tmlfjjr2$机动车当量,group=tmlfjjr2$日期,color=tmlfjjr2$日期))+geom_line(alpha=2/5)+
  geom_smooth(method = "loess",span=0.1)+
  xlab("时间序号")+ylab("车流量")+scale_color_hue("日期")

剔除9月30日的非节假日1

貌似9月30日的比较像节假日特征,将其排除再看

tmlfjjr1new <- read.csv("D:\\data\\thesis\\201610\\tmldata\\tmlfjjr1new.csv",header = T)
tmlfjjrnew <- read.csv("D:\\data\\thesis\\201610\\tmldata\\tmlfjjrnew.csv",header = T)
ggplot(tmlfjjr1new,aes(tmlfjjr1new$时间序号,tmlfjjr1new$机动车当量,group=tmlfjjr1new$日期,color=tmlfjjr1new$日期))+geom_line(alpha=2/5)+
  geom_smooth(method = "loess",span=0.1)+
  xlab("时间序号")+ylab("车流量")+scale_color_hue("日期")

剔除9月30日的非节假日全

ggplot(tmlfjjrnew,aes(tmlfjjrnew$时间序号,tmlfjjrnew$机动车当量,group=tmlfjjrnew$日期,color=tmlfjjrnew$日期))+geom_line(alpha=2/5)+
  geom_smooth(method = "loess",span=0.1)+
  xlab("时间序号")+ylab("车流量")+scale_color_hue("日期")+
  scale_x_continuous(breaks = seq(0,288,24))+
  scale_y_continuous(breaks = seq(0,120,20))
#ggsave("D:\\王致远\\论文\\大论文\\实验\\绘图\\非节假日交通流除930.jpg",width=7.29,height=4.5,dpi=600)

基本可以反映问题了

ggplot(tmlfjjrnew,aes(tmlfjjrnew$时间序号,tmlfjjrnew$机动车当量,group=tmlfjjrnew$日期,color=tmlfjjrnew$日期))+
  # geom_line(alpha=2/5)+
  geom_smooth(method = "loess",span=0.1, se = FALSE)+
  xlab("Timestamp")+ylab("Traffic volume")+scale_color_hue("日期")+
  scale_x_continuous(breaks = seq(0,288,24))+
  scale_y_continuous(breaks = seq(0,120,20))+
  theme_bw()+
  guides(color=FALSE)
#ggsave("D:\\王致远\\论文\\大论文\\实验\\绘图\\非节假日交通流除930.jpg",width=7.29,height=4.5,dpi=600)
ggsave(file="D:\\交大云同步\\论文\\小论文\\4_基于KNN方法的短时交通流序列非对称损失预测\\绘图\\非节假日.jpg",width=7.29,height=4.5,dpi=600)

各类的均值线

把剔除了9月30日的节假日和非节假日合并起来,并用一列标识

tmlall <- rbind(tmljjr,tmlfjjrnew)
tmlall <- tmlall[,-1]
names(tmlall)
tmlall$是否为节假日 <- 0
unique(tmlall$是否为节假日)
jjr <- unique(tmlall$日期)[1:7]
jjr <- as.character(jjr)
jjr
for(i in 1:nrow(tmlall)){
  for(x in jjr){
   if(tmlall[i,1]==x){
    tmlall[i,15]=1 
    }
  }
}
table(tmlall$日期,tmlall$是否为节假日)
tmlall$是否为节假日 <- as.factor(tmlall$是否为节假日)
ggplot(tmlall,aes(tmlall$时间序号,tmlall$机动车当量,group=tmlall$日期,color=tmlall$日期))+
  stat_summary(aes(group=tmlall$是否为节假日,color=tmlall$是否为节假日),fun.y=mean,geom="line")+
  xlab("时间序号")+ylab("车流量")+scale_color_hue("是否为节假日")+
  scale_x_continuous(breaks = seq(0,288,24))+
  scale_y_continuous(breaks = seq(0,120,20))
ggsave("D:\\王致远\\论文\\大论文\\实验\\绘图\\节假日与非节假日交通流对比.jpg",width=7.29,height=4.5,dpi=600)

数据转置尝试

数据合并

names(tmlall)
unique(tmlall$日期)

缺少9月30日的,将其补充上

tmlall <- rbind(tmljjr,tmlfjjr)
tmlall <- tmlall[,-1]
unique(tmlall$日期)

标识节假日和非节假日,将9月30日归为节假日

jjr <- unique(tmlall$日期)[c(1:7,18)]
jjr <- as.character(jjr)
jjr
tmlall$是否为节假日 <- 0
for(i in 1:nrow(tmlall)){
  for(x in jjr){
   if(tmlall[i,1]==x){
    tmlall[i,15]=1 
    }
  }
}
table(tmlall$日期,tmlall$是否为节假日)

尝试转置数据

names(tmlall)

需要保留的属性有:日期、时间序号、机动车当量

tmlzz <- tmlall[,c(1,4,14)]
names(tmlzz)
tmlcs <- dcast(tmlzz,tmlzz$日期~tmlzz$时间序号)
dim(tmlcs)

貌似成功了

names(tmlcs)

是成功了,不过存在一个比较大的问题,原始数据是有缺失的,所以cast后的数据缺失的自动变为0了。

寻找缺失模式

理想中,应当以临近值插补到缺失值中,使得每日的数据都是288个。

table(tmlall$日期)
names(tmlall)
write.csv(tmlall,"D:\\data\\thesis\\201610\\tmldata\\tmlall.csv")


ahorawzy/TFTSA documentation built on May 13, 2019, 12:18 p.m.