国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - R語言 - R繪制漂亮的中國地圖的實現示例

R繪制漂亮的中國地圖的實現示例

2022-01-18 19:05Kanny廣小隸 R語言

本文主要介紹了R繪制漂亮的中國地圖的實現示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

ggmap

說起用R繪制中國地圖,很多有經驗的老司機肯定會推薦ggmap,無論是里面自帶的各種地區繪圖、經緯度查詢以及可以與ggplot無縫銜接繪制地區統計圖,這都是R中其它繪制地圖所難以超越的優勢。

但奈何R經常無法獲取ggmap里面的地圖。當我想導入中國地圖時,就會出現如下圖所示的問題。

R繪制漂亮的中國地圖的實現示例

由于數模所需,為了硬著頭皮進行繪制,哪怕丑一些,所以探索出了下面兩種繪制中國地圖的方法。

 

maps + mapdata

這種方式繪制中國地圖非常的簡單,只需要一行代碼(注意要先調用兩個R包maps, mapdata):

map("china", col = "red4", ylim = c(18, 54), panel.first = grid())

便可以得到如下圖所示的繪制結果。

R繪制漂亮的中國地圖的實現示例

但這幅圖只是一幅單純的中國地圖,如果我們想要插入部分城市的人口數據以及其它信息,該如何添加呢?(數據來源:2015-2016年中國城市人口數量排名)

首先來看看我們的數據信息(代碼有點丑,不要在意這些細節):

beijing = c('北京&天津', 39.90419989999999, 116.4073963, 1961.24 + 1293.82)
shanghai = c('上海', 31.2303904, 121.4737021, 2301.91)
zhengzhou = c('鄭州', 34.7472541716, 113.6249284647, 862.65)
wulumuqi = c('烏魯木齊', 43.8266013700, 87.6168405804, 311.03)
haerbin = c('哈爾濱', 45.8021755616, 126.5358247345, 1063.6)
xian = c('西安', 34.3412614674, 108.9398165260, 846.78)
wuhan = c('武漢', 30.5927599029, 114.3052387810, 978.54)
chengdu = c('成都', 30.5702183724, 104.0647735044, 1404.76)
lasa = c('拉薩', 29.6441135160, 91.1144530801, 55.94)
chongqing = c('重慶', 29.5647048135, 106.5507137149, 2884.62)
kunming = c('昆明', 24.8796595146, 102.8332118852, 643.2)
guangshen = c('廣州&深圳', 23.0206747828, 113.7517837567, 1270.08 + 1035.79)

cities = c(beijing, shanghai, zhengzhou, wulumuqi, haerbin, xian, wuhan,
         chengdu, lasa, chongqing, kunming, guangshen)
mat.cities = as.data.frame(matrix(cities, ncol = 4, byrow = T), stringsAsFactors = F)
names(mat.cities) = c('names', 'lat', 'long', 'population')
mat.cities$population = as.numeric(as.character(mat.cities$population)) / 100
mat.cities$lat = as.numeric(as.character(mat.cities$lat))
mat.cities$long = as.numeric(as.character(mat.cities$long))

具體操作其實也非常簡單:使用for循環搭配基礎的points()函數,使用如下所示的代碼即可:

map("china", col = "red4", ylim = c(18, 54), panel.first = grid())
for (i in 1:12) {
points(mat.cities$long[i], mat.cities$lat[i], cex = 1.5, pch = 16)
}
title('Population')

R繪制漂亮的中國地圖的實現示例

這里應該還需要用其它信息來展現我們的人口數,但是由于這個繪圖不是很漂亮,所以就不進行接下來的操作了。后面介紹一個更漂亮的不翻墻繪制人口地圖的方法――ggplot + mapdata。

 

ggplot2 + mapdata

話不多說,直接用我們前面生成的數據進行繪制。這里講一下大概的流程:

同上一種方式,利用map()函數產生中國地圖的輪廓(如果能上google,使用ggmap當然更好)。

使用ggplot進行繪圖:

  • 使用geom_path()函數將我們生成的中國地圖的輪廓繪制出來,這里修改顏色,選擇清新自然的粉色;
  • 用geom_point()將各個城市的位置用散點點上,同時點的大小表示人口的多少,這里用清新藍;
  • 用geom_text()在每個點上添加上城市的名稱;
  • 修改各個標簽以及各種title的名稱;
  • 進行修改主題、Mac上顯示中文字等操作。
china <- map("china", plot = F)
ggplot() + 
geom_path(data = china, aes(long, lat, group = group), color = '#FD9FA4', show.legend = F) +
geom_point(data = mat.cities, aes(x = long, y = lat, size = population), alpha = 0.8, color = '#8BB6D6') +
# geom_text_repel(data = mat.cities, aes(x = long, y = lat, label = names), family = "STHeiti") +
geom_text(data = mat.cities, aes(x = long, y = lat, label = names), family = "STHeiti") +
labs(x = '經度', y = '緯度',      text = element_text(family = "STHeiti"),
      plot.title = element_text(hjust = 0.5))

產生出來的圖像如下圖所示:

R繪制漂亮的中國地圖的實現示例

這樣的圖已經基本算作是能看的了,但這并不是強迫癥患者所最終追求的繪圖。其美中不足的是每個城市的名稱覆蓋在我們的散點上了。

通常我們的做法非常簡單,在geom_text()中設置參數,將所有的文字向上下左右選一個方向,防止覆蓋。這樣做當然沒問題,這里介紹另一種方法,可以進行自適應調整以防覆蓋。

 

ggrepel

我們的做法是使用ggrepel包中的geom_text_repel()函數替換掉我們原本的geom_text(),細心的同學已經發現,這就是我們上面代碼注釋掉的部分。這時只需將其封印解除,同時封印住geom_text()這個小頑皮,我們的繪圖就大功告成了!

R繪制漂亮的中國地圖的實現示例

到此這篇關于R繪制漂亮的中國地圖的實現示例的文章就介紹到這了,更多相關R繪 中國地圖內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://kanny.blog.csdn.net/article/details/82810965

延伸 · 閱讀

精彩推薦
  • R語言R語言讀取xls與xlsx格式文件過程

    R語言讀取xls與xlsx格式文件過程

    這篇文章主要為大家介紹了使用R語言讀取xls與xlsx格式文件的過程步驟,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪...

    Kanny廣小隸11982022-01-20
  • R語言如何用R語言繪制散點圖

    如何用R語言繪制散點圖

    這篇文章主要介紹了如何用R語言繪制散點圖,幫助大家更好的理解和學習使用R語言,感興趣的朋友可以了解下...

    菜鳥教程13002021-12-23
  • R語言R語言實現支持向量機SVM應用案例

    R語言實現支持向量機SVM應用案例

    本文主要介紹了R語言實現支持向量機SVM應用案例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    一天_pika5222022-01-18
  • R語言R語言gsub替換字符工具的具體使用

    R語言gsub替換字符工具的具體使用

    這篇文章主要介紹了R語言gsub替換字符工具的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友...

    lztttao10372021-12-24
  • R語言R語言常量知識點總結

    R語言常量知識點總結

    在本篇文章里小編給大家整理了一篇關于R語言常量知識點總結內容,有興趣的朋友們可以學習分享下。...

    R語言教程網12102021-12-29
  • R語言R語言中的vector(向量),array(數組)使用總結

    R語言中的vector(向量),array(數組)使用總結

    這篇文章主要介紹了R語言中的vector(向量),array(數組)使用總結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要...

    A葉子葉來5772021-11-14
  • R語言基于R/RStudio中安裝包“無法與服務器建立連接”的解決方案

    基于R/RStudio中安裝包“無法與服務器建立連接”的解決方案

    這篇文章主要介紹了基于R/RStudio中安裝包“無法與服務器建立連接”的解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    truffle52815052022-01-05
  • R語言R語言中qplot()函數的用法說明

    R語言中qplot()函數的用法說明

    這篇文章主要介紹了R語言中qplot()函數的用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    Jack_丁明12752022-01-05
主站蜘蛛池模板: 欧美精品一区二区三区手机在线 | 日韩视频中文字幕 | 国产免费黄色 | 黑人中文字幕一区二区三区 | 亚洲国产精品一区二区三区 | 国产高清在线精品一区二区三区 | 亚洲成年人网站在线观看 | 98成人网 | 一区二区三区在线播放 | 香蕉大人久久国产成人av | 一区二区免费视频 | 欧美视频在线看 | 美女久久久久 | 美日韩在线 | 欧美一区永久视频免费观看 | 国产高清精品一区二区三区 | 精品国产乱码久久久久久影片 | 欧美日韩在线免费观看 | 精品女同一区二区三区在线绯色 | h片在线 | 国产精品久久久久久久久免费高清 | 日韩一区二区在线观看 | 久久亚洲天堂 | 欧美精品在线看 | 亚洲天堂一区二区 | 成人中文字幕在线观看 | 91资源在线视频 | 少妇一区二区三区免费观看 | 色嫩紧中文字幕在线 | 亚洲激情在线观看 | 国产精品久久久久av | 亚洲小视频网站 | 久热免费在线视频 | 国产中文字幕一区 | 中文字幕在线综合 | 另类五月 | 久久精品国产一区二区三区不卡 | 国精产品一区二区三区有限公司 | 日本中文字幕一区 | 久久国产区 | 亚洲欧洲在线观看 |