[R语言]资料视觉化G01─运用ggplot2完成线图(line)

Hi! 大家好,我是Eric,这次要练习运用R语言中的ggplot2套件完成线图(line)http://img2.58codes.com/2024/emoticon01.gif


缘起 :根据高速公路局2018年2月「春节连假国道重点壅塞路段时段旅行时间倍数表」,我们挑选出旅行时间倍数最高之路段 ─北上头城坪林(6倍),并找出他的前2年历史资料,想要知道2016-2018年之间「北上头城坪林」路段的交通量会如何变化。
方法 :运用[R语言]的[ggplot2]套件。
使用资料 :交通部高速公路局交通资料库ETC(Electronic Toll Collection )资料─各类车种通行量统计(TDCS_M03A),2016-2018年。


1. 载入所需套件

library(magrittr)library(ggplot2)library(ggthemes)library(RColorBrewer)

2. 载入资料与资料前置处理

setwd("C:/Users/User/Desktop/Eric/data/2016-2018first day")  #设定路径FD1618<-do.call(rbind,lapply(list.files(path="C:/Users/User/Desktop/Eric/data/2016-2018first day",pattern="*.csv"),read.table, header=FALSE, sep=","))   #将设定的档案路径资料夹中,所有档名以.csv结尾的档案载入names(FD1618)<-c("date time", "o", "NS", "VehicleType", "flow")   #命名栏位名称FD1618_TP<-subset(FD1618, o=="05F0287N")  #筛选目标路段FD1618_TP_31<-subset(FD1618_TP, VehicleType==31)   #筛选目标车种date<-as.Date(FD1618_TP_31$`date time`)  #转换成日期格式FD1618_TP_31<-cbind(FD1618_TP_31,date)   #新增日期栏位

3. 产生x轴时间区间(由于原资料每5分钟时间间隔区分太细,不利于视觉化呈现,以每30分钟间隔取代)
示意如下:

原5分钟时间间隔30分钟时间间隔08:0009:0008:0509:0008:1009:00
n1<-seq(100,2400,by=100)   #产生时间区间基础数字n2<-seq(0030,2330,by=100)   #产生时间区间基础数字t<-c()      #产生空向量,用以储存时间区间for (i in 1:48) {  if(i%%2==0){    t[i]=n1[i/2]  }else{    t[i]=n2[ceiling(i/2)]  }}                   #由于24小时每30分钟间隔将产生48个数字t2<-c(0000,rep(t[-48],each=6),rep(t[48],each=5))   #原资料为00:00-23:55,最后30分钟仅有5项(23:35、23:40、23:45、23:50、23:55),故依此规则产生符合的对照时间time<-rep(t2,3)   #由于分析3年,故每1年各产生1个对照时间FD1618_1_TP_31<-cbind(FD1618_TP_31,time)  #新增对照时间到原资料上

4. 依照日期与时间群组加总交通量

FD1618_2_TP_31<-aggregate(flow~date+time,FD1618_1_TP_31,mean)

5. 资料视觉化

FD1618_2_TP_31$date<-as.character(FD1618_2_TP_31$date)     #将日期资料转为字串型态ggplot(FD1618_2_TP_31,mapping = aes(x=time, y=flow, group=date, colour=date))+geom_line(linetype = "solid",size=1.5)+labs(title="Traffic flow of Toucheng to Pinglin  in first day of\n the Chinese Lunar New Year(2016-2018)", x="time", y="flow")+theme_stata()+theme(axis.title.x = element_text(size = 15, face = "bold", vjust = 0.5, hjust = 0.5))+theme(axis.title.y = element_text(size = 15, face = "bold", vjust = 0.5, hjust = 0.5, angle = 360))+theme(axis.text.y = element_text(angle = 360))+theme(plot.title = element_text(size=15,face = "bold"))+scale_color_manual(values =c("#f9c00c","#00b9f1","#7200da"))#ggplot(mapping=aes())产生空白底图,mapping指定美学对应,将time对应到x轴、将flow对应到y轴...等,    colour=date依照日期区分颜色; geom_line(linetype,size)于底图上产生线图,并设定线型与大小; labs()设定标题、x轴、y轴名称; theme_stata()设定主题样式; theme(axis,title.x)设定x轴名称样式; theme(axis,text.x)设定x轴资料文字样式; theme(plot.title)设定标题样式; scale_color_manual()设定线条颜色

6. 大功告成
http://img2.58codes.com/2024/20115774YkPjg7oLU8.png


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章