แพกเกจ rworldmap บน R ช่วยให้สามารถสร้างแผนที่โลกพร้อมกับการกระจายของข้อมูลที่สนใจดังตัวอย่าง
เช่น ข้อมูลการผลิตข้าวทั่วโลกจาก FAOSTAT ซึ่งเราสามารถดาวโหลดข้อมูลในรูปของไฟล์ csv ได้ ดังรูป
จากไฟล์ csv ที่ดาวโหลดได้ดังรูป
เราต้องการข้อมูลเพียงชื่อประเทศและตัวเลขปริมาณผลผลิตเท่านั้น ดังนั้นเราอาจจะลบข้อมูลคอลัมน์อื่นๆ ออกไปก่อนก็ได้ นอกจากนี้เราจำเป็นต้องใช้ code ของชื่อประเทศซึ่ง rworldmap แนะนำให้ใช้ code แบบ ISO3
ซึ่งสามารถหาได้จาก http://unstats.un.org/unsd/methods/m49/m49alpha.htm ซึ่งเราสามารถนำเอามาใส่คู่กับชื่อประเทศในตารางข้อมูลที่เรามีอยู่โดยอาจจะใช้ฟังก์ชั่น vlookup() ใน Excel ดังตัวอย่าง
=VLOOKUP(A2,$G$2:$H$242,2,FALSE)
จากนั้นเราปรับแต่งข้อมูลให้เรียบร้อยหากมีการใส่ชื่อผิด เนื่องจากวิธีการเขียนชื่อที่แตกต่างกันในแต่ละแหล่งข้อมูล นอกจากนี้ผมได้ปรับให้หน่วยปริมาณการผลิตอยู่ในรุป ล้านตัน (MT) เพื่อความสะดวกในการอ่านค่า
บน R console ติดตั้งแพกเจกที่ต้องใช้คือ rworldmap
> install.packages("rworldmap")
> library(rworldmap)
เลือกไฟล์ข้อมูล csv ที่เตรียมไว้
> file <-file.choose()
> data <-read.csv(file)
> data
AreaName ISO3 Value MT
1 Afghanistan AFG 512094 0.512094
2 Albania ALB 0 0.000000
3 Algeria DZA 320 0.000320
4 Angola AGO 37608 0.037608
จากนั้น join ข้อมูลเข้ากับ map
> data.join <-joinCountryData2Map(data,joinCode ="ISO3",nameJoinColumn="ISO3",verbose=TRUE)
122 codes from your data successfully matched countries in the map
1 codes from your data failed to match with a country code in the map
failedCodes
[1,] "REU"
122 codes from the map weren't represented in your data
ข้อความด้านล่างบอกให้ทราบว่ามี 1 code ในข้อมูลของเราที่ไม่สามารถ match กับชื่อในระบบของ rworldmap ได้คือ REU ซึ่งหมายถึงเกาะ Réunion ของฝรั่งเศส (ซึ่งไม่มีใน rworldmap)
แสดงแผนที่
> mapDevice()
> mapCountryData(data.join, nameColumnToPlot="MT")
เราสามารถปรับแต่งแผนที่ให้สวยงามและให้ข้อมูลมากขึ้นได้ โดยใช้แพจเกจเพิ่มเติมเช่น RColorBrewer ด้านล่างนี้เป็น code ที่ผมปรับแต่งมา
library(rworldmap)
library(RColorBrewer)
map <-function(){
file <-file.choose()
data <-read.csv(file)
data.join <- joinCountryData2Map(data
,joinCode ="ISO3"
,nameJoinColumn="ISO3"
,verbose=TRUE)
#getting color palette
color <- brewer.pal(10,'Spectral')
mapDevice()
mapParams <-mapCountryData(data.join
,nameColumnToPlot="MT"
,catMethod=c(0,0.1,1,10,50,100,150,200,250)
,colourPalette=color
,mapTitle="World Rice Production")
do.call(addMapLegend
,c(mapParams
,legendLabels="all"))
}
หรือแสดงเฉพาะบางพื้นที่ เช่น ในเอเชียเท่านั้น
library(rworldmap)
library(RColorBrewer)
map <-function(){
file <-file.choose()
data <-read.csv(file)
data.join <- joinCountryData2Map(data
,joinCode ="ISO3"
,nameJoinColumn="ISO3"
,verbose=TRUE)
#getting color palette
color <- brewer.pal(10,'Spectral')
mapDevice()
mapParams <-mapCountryData(data.join
,nameColumnToPlot="MT"
,catMethod=c(0,0.1,1,10,50,100,150,200,250)
,colourPalette=color
,mapRegion="asia"
,mapTitle="Asia Rice Production")
do.call(addMapLegend
,c(mapParams
,legendLabels="all"))
}
ไม่มีความคิดเห็น:
แสดงความคิดเห็น