【科研貓·繪圖】獻禮國慶70年,R語言繪製中國地圖

  • 2019 年 10 月 8 日
  • 筆記

建國70周年大慶即將到來,各行各業都在積極籌備迎接祖國的生日,在這個舉國歡騰的時刻,我們決定以一種特殊方式來表達自己對祖國母親的祝福:一副用R語言繪製的中國地圖。

對於為什麼要跟大家講地圖的繪製,還有個重要的原因,就是我們很多做流行病學研究的同學會涉及到地圖的繪製,其頻繁出現在Lancet或者NEJM這類頂級雜誌中,但是地圖的繪製往往又是一大難題。

對於做流行病學研究的各位來說,流行病學的數據講究「三間分布」,即人群分布、時間分布和空間分布。其中的「空間分布」最好是在地圖上展示才比較清楚。R軟體集統計分析與高級繪圖於大成,是最適合做這項工作了。關於R語言繪製地圖,可能大家還心存疑問,感覺R語言是無法完成這些工作的,下面我們逐一看來。

LEVEL 1

繪製地圖之前,需要獲取地圖的數據,包括世界地圖、中國地圖或者各省市地圖都一樣。地圖的GIS數據可以在國家基礎地理資訊中心的網站(http://nfgis.nsdi.gov.cn)裡面免費下載。官方公開的數據包括:地圖數據,及居住地、交通、河流等輔助數據。在這裡,我們把中國地圖的GIS文件分享給大家(詳情見文末客服:胖雨小姐姐)。

繪製地圖非常簡單,只要載入幾個常用的R包即可。然後讀取gis文件就能直接作圖。

做出來的中國地圖是下面這樣的,這個地圖中包括了中國的各大省市,不過這裡所有省市的顏色都是一樣的,暫時還不能幫助我們描述更多的資訊。

LEVEL 2

如果我們的功能再強大一點,把34個省市、直轄市等都標註上不同的顏色,可以簡單直接地指定col參數來實現。

在這裡,我使用了R語言中自帶的顏色方案terrain.colors()函數,其主要用來對地形定義顏色。畫出來的圖形是這樣的:

LEVEL 3

流行病學中繪製地圖主要的目的是為了描述發病率一類的資訊,然後用不同的顏色將其Highlight出來。下面我們就來試試看。

將中國的四個直轄市的名字挑出來,然後定義成四個不同的顏色,其餘省市還是用白色表示,畫出來的圖是這樣子的:

如果能夠做到這一步,那我們就能夠將感興趣的省市給凸顯出來了,比如中國首都-北京,再或者人口最多的省市-河南,再比如某某疾病發病率最高的省市等等。

LEVEL 4

那有沒有更加高級的方法,比如按照發病率的高低,或者類似的連續性變數,將不同省市/直轄市標註成不同的顏色呢?就像我們在NEJM和Lancet這一類文章中看到的。當然可以,作為無所不能的科研貓技術宅,沒有什麼對我們來說是不能實現的。下面就給大家演示一個最直觀的例子。

實例

在中國地圖中標註不同省市的人口數量

為了方便大家以後更方便地使用我們的這個程式碼,我們把數據都直接放到Excel表格中,如果大家要繪製自己的數據,只需更改這個數據即可,無需更改程式碼。我們的數據如下,省市按照「省份、直轄市、自治區、特別行政區」排列,各省市名稱按照首字母順序排列,人口數據在最後一列:

大家可以想一下,如果要按照人口數量繪製地圖的話,其實在畫圖的過程當中跟剛才的繪圖方法沒有太大區別,只是剛才用的是隨機的顏色,這裡我們把不同省份顏色按照數值高低排列即可,就是這麼簡單。具體的程式碼如下(版面問題,程式碼有縮略,需要程式碼請關注公眾號,聯繫文末客服):

繪製出來的圖形就是按照人口數量的多少進行顏色排布的:

LEVEL 5

好的,地圖繪製到這裡,相信大家的問題基本也都解決了,如果想把自己的數據和地圖中省份的顏色match上,直接更改表格中的數據,按照我們的程式碼運行即可。

下面,就是說說我們的特殊禮物了。作為數據分析師,沒有什麼比自己動手繪製一幅涵蓋祖國大好河山的地圖更有意義了,於是乎,我們純用R語言(沒有用到任何後期製圖軟體哦),通過不同的繪圖函數,給祖國的生日獻上一幅漂亮的中國地圖。

最後,祝福祖國永遠繁榮昌盛,願祖國的科研、衛生事業快速穩定發展,躍居世界一流水平。

本期乾貨

!地圖繪製程式碼!

·

關注「科研貓」公眾號,聯繫客服

胖雨小姐姐

or

折耳貓小姐姐

領取

往期乾貨找不到?自己看看下面是森么!

往期乾貨鏈接

R語言從入門到精通系列

從今天開始,每天學點R語言~

R語言從入門到精通:Day1

R語言從入門到精通:Day2

R語言從入門到精通:Day3

R語言從入門到精通:Day4

R語言從入門到精通:Day5

R語言從入門到精通:Day6

R語言從入門到精通:Day7

R語言從入門到精通:Day8

R語言從入門到精通:Day9

R語言從入門到精通:Day10

R語言從入門到精通:Day11

科研作圖系列

【科研貓·繪圖】今夏最熱的「熱圖」(帶R程式碼分享)

【科研貓·繪圖】看·箱線圖·如何美麗動人(程式碼分享)

【科研貓·繪圖】優雅版·小提琴圖(帶R程式碼分享)

【科研貓·繪圖】繽紛版·韋恩圖(帶R程式碼分享)

【科研貓·繪圖】朋友圈最火熱的「火山圖」(帶R程式碼分享)

【科研貓·繪圖】bar(霸)圖繪製之霸氣滿屏

【科研貓·繪圖】GSEA分析全攻略,帶影片分享

【科研貓·繪圖】團團「圓圓」,來個不一樣的月餅

網路圖

從網路圖探尋基因互作的蛛絲馬跡(1)

【科研貓·繪圖】從網路圖探尋基因互作的蛛絲馬跡(2)

從網路圖探尋基因互作的蛛絲馬跡(3)

從網路圖探尋基因互作的蛛絲馬跡(4)

從網路圖探尋基因互作的蛛絲馬跡(5)

生存分析系列

【科研貓】生存分析的正確姿勢(1)影片+R程式碼分享

【科研貓·出品】TCGA超大批量生存分析教程

GEO數據挖掘系列

GEO資料庫挖掘(1)–SCI文章速成

GEO資料庫挖掘(2)–快速鎖定目標數據

挖掘GEO速成SCI文章系列教程(3)-R語言基礎

重磅:GEO資料庫挖掘教程(4)一體化分析程式碼(帶影片+R程式碼分享)

GO/KEGG功能富集系列

3分鐘了解GO/KEGG功能富集分析

乾貨預警:3分鐘搞定GO/KEGG功能富集分析(2)

終極篇:3分鐘搞定GO/KEGG功能富集分析-柱狀圖

終極篇:3分鐘搞定GO/KEGG功能富集分析-氣泡圖

TCGA數據挖掘系列

隔壁實驗室的「禿鷲」師兄又發SCI啦–TCGA數據挖掘實戰

TCGA數據挖掘終結者:cBioPortal

生物資訊入門系列

大咖聊「生信」—生物資訊系列(1)

生物資訊系列課程-R語言入門

更多科研新鮮資訊、文獻精讀和生物資訊技能