欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

基于R语言的Kaggle案例分析学习笔记(六)

程序员文章站 2022-04-10 20:59:04
...
可视化
本案例的大纲:
1、统计类型的可视化----以共享自行车的租用为例
2、地理可视化-----旧金山犯罪事件
3、美国干旱情况
4、代码示例

1、统计类型的可视化----以共享自行车的租用为例
    主要构建散点图,不同时间段的不同温度下的租车数。
基于R语言的Kaggle案例分析学习笔记(六)

2、旧金山犯罪人数地理可视化
     将各个类型的犯罪人数可视化到各个地区,主要用到ggmap函数,但是由于要从谷歌网站下载地图,我这边得到外网软件没起作用,所以没办法展示。
3、美国干旱情况
     主要用到choroplethrMaps包画分级地图,animation包画动画地图。
4、代码示例
     
#(1)租车数量的散点图
train<-read.csv("D:/R语言kaggle案例实战/Kaggle第六课/visualization_1.csv")
library(ggplot2)#画图包
library(lubridate)#日期包
library(scales)#标准化
x_axis<-"jitter_times"#x轴
y_axis<-"count"#y轴
color<-"temp_f"#温度系颜色
head(train)
train$datetime<-as.POSIXct(train$datetime)#将datetime变成时间类型
train$hour<-hour(train$datetime)#提取小时
train$times<-as.POSIXct(strftime(ymd_hms(train$datetime),format = "%H:%M:%S"),format = "%H:%M:%S")#提取时间:时分秒
train$jitter_times<-train$times+minutes(round(runif(nrow(train),min=0,max=59)))
train$day<-wday(ymd_hms(train$datetime),label=T)#提取工作日
train$temp_f<-train$temp
ggplot(train[train$workingday==1,],aes_string(x=x_axis,y=y_axis,color=color))+#工作日的租车量散点图,该步骤画出横纵坐标
  geom_point(position=position_jitter(w=0.0,h=0.4))+theme_light(base_size =20 )+#画散点,position_jitter表示晃动,其中参数w、h的大小表示上下左右晃动的大小,theme_light调整背景明亮程度。
  scale_x_datetime(breaks=date_breaks("4 hours"),labels=date_format("%I:%M:%P"))+#设置x轴格式,4个小时为分割,标签的形式为时间格式。
  scale_colour_gradientn("Temp",colours=rainbow(10))+xlab('hour')#标签颜色
#(2)犯罪事件的地图可视化
library(ggmap)
map<-get_map("San Francisco",zoom=12)#获取地图
plot(map)
train2<-read.csv("D:/R语言kaggle案例实战/Kaggle第六课/visualization_2.csv")
map_crime<-function(crime_df,crime){  
  filtered<-filter(crime_df,Category %in% crime)#获取某些犯罪类型的犯罪人数
  plot<-ggmap(map,extent = 'device')+geom_point(data=filtered,aes(x=X,y=Y,color=Category),alpha=0.6)#画图,x,y为经纬度,color颜色根据犯罪类型而定,extent为地图类型。
  return(plot)
}
map_crime(train2,c('SUICIDE','ARSON'))#'SUICIDE','ARSON'这两种犯罪的地图可视化
#(3)美国各个州的干旱情况
library(data.table)#处理大数据的包
library(choroplethrMaps)#处理分级地图的包,比如不同地区的人口密度
library(ggplot2)
library(dplyr)
library(animation)#动画图
train3<-fread("D:/R语言kaggle案例实战/Kaggle第六课/visualization_3.csv",select=c("releaseDate","NONE","FIPS"))#fread读取大数据的方法,select参数表示只读取三列
head(train3)
train3$releaseDate<-lubridate::ymd(train3$releaseDate)#规范时间格式
train3$year<-year(train3$releaseDate)
train3$month<-month(train3$releaseDate)
train3<-train3[,.("region"="FIPS","value"=100-NONE,year,month)]#重新构建数据格式,‘FIPS'作为新的一列的值,新列名为region,还增加value值。
train3<-train3[,.("value"=mean(value,na.rm=T)),by=.(region,year,month)]#对value分组求均值处理,根据不同地区、年、月
train3$value<-cut(train3$value,breaks=5,labels = c('0-20','20-40','40-60','60-80','80-100'))#对连续性的数据进行离散化,分为五段。
years<-unique(train3$year)#去重
month<-unique(train3$month)#去重
library(lattice)
saveGIF({#saveGIF函数保存动态图
  ani.options(interval=1.2,nmax=1644,convert=shQuote('E:/Rsoftware/ImageMagick-7.0.6-Q16/convert.exe'))#间隔变化时间是1.2s,nmax表示图片的最多的滚动次数,必须安装ImageMagick-7.0.6-Q16这个软件,shQuote表示安装的地址
  for(ye in years){
  for(mo in months){
  train3plot<-train3[c(year==ye&month==mo)]
  map<-CountryChoropleth$new(train3plot)#画分级地图
  map$title=paste("US Drought Conditions by Country,year:",ye,"month:",mo)
  map$ggplot_scale<-scale_fill_brewer(name='% in drought',palette='Reds')
  print(map$render())
  }
  }}
)
      数据下载地址:前两个数据下载地址在之前的文章中已经给出,最后一个例子的数据我没在Kaggle中找到,需要的伙伴可以自己找找,我本地电脑有这个数据,但CSDN不方便上传。