R語言繪製州市地圖進行可視化分析

目的

將經緯度數據對應的數值先進行聚類,然後將聚類的結果和經緯度數據進行合併,將不同的聚類結果在地圖上進行熱力板塊展示。type是聚類的類型結果

數據展示在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述
聚類結果判斷圖,聚成4類。

聚類包加載

install.packages("factoextra")

數據讀取

data=read.csv("C:\\Users\\Administrator\\Desktop\\Rap\\annual_conc_by_monitor_20181.csv",header=T)

## 得出有效數據:篩選列數:根據確定要研究的變量指標名稱只需要選擇5列:"Latitude","Longitude","Parameter_Name","Arithmetic_Mean","County_Name"
head(data)

subdata1<-data[,c("Latitude","Longitude","Parameter_Name","Arithmetic_Mean","State_Name")]

## 得出分析數據:篩選符合條件的數據:篩選城市、篩選研究指標
# 1.在指標State_Name中篩選城市New York, Vermont, New Hampshire, Massachusetts, Connecticut 這五個地方
# 2.在指標Parameter_Name中篩選 Ozone, Nitrogen dioxide, PM2. 5 local這三個變量值。

str(subdata1)

subdata2 <-  subset(subdata1,State_Name=c("New York","Vermont","New Hampshire","Massachusetts","Connecticut"))
subdata2$State=tolower(subdata2$State_Name)
newdata1 = subdata2[subdata2$Parameter_Name == 'Ozone',]
newdata2 = subdata2[subdata2$Parameter_Name == 'PM2.5 - Local Conditions',]
newdata3 = subdata2[subdata2$Parameter_Name == 'Nitrogen dioxide (NO2)',]


endata1 <- newdata1
endata2 <- newdata2
endata3 <- newdata3


#write.csv(endata1,"Ozone.csv")
#write.csv(endata2,"Nitrogen dioxide.csv")
#write.csv(endata3,"PM2.5.csv")
str(endata1)

聚類分析

#install.packages("fpc")
library(fpc)

## 聚類數據提取
mydata1<-endata1[,"Arithmetic_Mean"]
mydata2<-endata2[,"Arithmetic_Mean"]
mydata3<-endata3[,"Arithmetic_Mean"]

## 聚類個數判斷
library(factoextra)
df1 <- scale(mydata1)
fviz_nbclust(df1, kmeans, method = "wss") + geom_vline(xintercept = 4, linetype = 2) ##得出第一個數據聚成4類

df2 <- scale(mydata2)
fviz_nbclust(df2, kmeans, method = "wss") + geom_vline(xintercept = 4, linetype = 2)

df3 <- scale(mydata3)
fviz_nbclust(df3, kmeans, method = "wss") + geom_vline(xintercept = 4, linetype = 2)

## 進行聚類

kmd1=kmeans(mydata1,centers = 4)
kmd2=kmeans(mydata2,centers = 4)
kmd3=kmeans(mydata3,centers = 4)

##聚類結果合併

cldata1<-cbind(endata1,type=kmd1$cluster) #聚類結果和原始數據合併
cldata2<-cbind(endata2,type=kmd2$cluster) #聚類結果和原始數據合併
cldata3<-cbind(endata3,type=kmd3$cluster) #聚類結果和原始數據合併

head(cldata1)
str(cldata1)
cldata1$type=factor(cldata1$type)
cldata2$type=factor(cldata2$type)
cldata3$type=factor(cldata3$type)

地圖繪製

euro <- map_data("state", region = c("new york","vermont",
 "new hampshire","massachusetts", "connecticut"))

hb_map1<-merge(euro,cldata1,by.x="region",by.y="State")
hb_map2<-merge(euro,cldata2,by.x="region",by.y="State")
hb_map3<-merge(euro,cldata3,by.x="region",by.y="State")

### 地圖1
ggplot(hb_map1,aes(x=long,y=lat,fill=type))+
geom_polygon(colour="grey")+
coord_map("polyconic")+ggtitle("Ozone")

### 地圖2
ggplot(hb_map2,aes(x=long,y=lat,fill=type))+
geom_polygon(colour="grey")+
coord_map("polyconic")+ggtitle("PM2.5")

### 地圖3
ggplot(hb_map3,aes(x=long,y=lat,fill=type))+
geom_polygon(colour="grey")+
coord_map("polyconic")+ggtitle("N02")
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章