绘制世界地图or中国地图

2023-08-14  本文已影响0人  小杜的生信筆記

写在前面

在8月初,自己需要使用中国地图的图形,自己就此也查询相关的教程,自己也做一下小小总结,希望对自己和同学们有所帮助。

最终图形


这个系列从2022年开始,一直更新使用R语言分析数据及绘制精美图形。小杜的生信笔记主要分享小杜学习日常!如果,你对此感兴趣可以加入该系列的学习。

欢迎投稿

小杜一直在分享自己平时学习笔记,因此分享的内容大多数是与自己相关的,局限性比较大。我一直在倡导大家一起分享自己学习笔记或教程。分享内容不限于生信教程,可以是文章or文献遇到的问题及解决方案学习感悟等等。

小杜的生信笔记投稿窗口会一直开放,也欢迎大家投稿。


绘图教程

绘制教程推荐:The R Graph Gallery,该网址我在前面的教程中也推荐过,对于初学者或是“老油条”的同学依旧是比较有好的。里面有很多的额图形,基本是我们平时可以使用到。

https://r-graph-gallery.com/

世界地图

推图代码

# Load libraries
library(leaflet)

# Make data with several positions
data_red <- data.frame(LONG=42+rnorm(10), LAT=23+rnorm(10), PLACE=paste("Red_place_",seq(1,10)))
data_blue <- data.frame(LONG=42+rnorm(10), LAT=23+rnorm(10), PLACE=paste("Blue_place_",seq(1,10)))

# Initialize the leaflet map:
m <- leaflet() %>% 
  setView(lng=42, lat=23, zoom=6 ) %>%

  # Add two tiles
  addProviderTiles("Esri.WorldImagery", group="background 1") %>%
  addTiles(options = providerTileOptions(noWrap = TRUE), group="background 2") %>%

  # Add 2 marker groups
  addCircleMarkers(data=data_red, lng=~LONG , lat=~LAT, radius=8 , color="black",
                   fillColor="red", stroke = TRUE, fillOpacity = 0.8, group="Red") %>%
  addCircleMarkers(data=data_blue, lng=~LONG , lat=~LAT, radius=8 , color="black",
                   fillColor="blue", stroke = TRUE, fillOpacity = 0.8, group="Blue") %>%

  # Add the control widget
  addLayersControl(overlayGroups = c("Red","Blue") , baseGroups = c("background 1","background 2"), 
                   options = layersControlOptions(collapsed = FALSE))

不同地点之间连线


该类型的世界地图也是经常可以看到的,也算是常用。

绘图代码

# World map is available in the maps package
library(maps)

# No margin
par(mar=c(0,0,0,0))

# World map
map('world',
    col="#f2f2f2", fill=TRUE, bg="white", lwd=0.05,
    mar=rep(0,4),border=0, ylim=c(-80,80) 
)
# Dplyr for data wrangling and pipe function
library(dplyr)

# Cities
Buenos_aires <- c(-58,-34)
Paris <- c(2,49)
Melbourne <- c(145,-38)

# Data frame
data <- rbind(Buenos_aires, Paris, Melbourne) %>% 
  as.data.frame()
colnames(data) <- c("long","lat")

# Show the cities on the map
map('world',
    col="#f2f2f2", fill=TRUE, bg="white", lwd=0.05,
    mar=rep(0,4),border=0, ylim=c(-80,80) 
)
points(x=data$long, y=data$lat, col="slateblue", cex=3, pch=20)
### 连线
# Load geosphere
#BiocManager::install("geosphere")
library(geosphere)

# Background map
map('world',
    col="#f2f2f2", fill=TRUE, bg="white", lwd=0.05,
    mar=rep(0,4),border=0, ylim=c(-80,80) 
)

# Dot for cities
points(x=data$long, y=data$lat, col="slateblue", cex=3, pch=20)

# Compute the connection between Buenos Aires and Paris
inter <- gcIntermediate(Paris,  Buenos_aires, n=50, addStartEnd=TRUE, breakAtDateLine=F)

# Show this connection
lines(inter, col="slateblue", lwd=2)

# Between Paris and Melbourne
inter <- gcIntermediate(Melbourne,  Paris, n=50, addStartEnd=TRUE, breakAtDateLine=F)             
lines(inter, col="slateblue", lwd=2)

绘制中国地图

这是本次教程自己要绘制的图形,自己也不画,也是查了一些想嘎的教程,最终获得最简单的图形。绘制世界地图,基本没有什么大的区别,但是绘制中国地图(or其他国家地图),就需要很精准的信息不然在图国家领土就可能会有所缺失,再各个方面你可能受到影响,虽然现在可能不会受影响,但是你敢确认以后会发什么呢.......

此教程中国地图的数据来源

本次教程绘制中国地图的数据来源于阿里数据可视化平台.

网址:
http://datav.aliyun.com/portal/school/atlas/area_selector

在此网址下载中国地图的数据,下载格式为json格式。

下载网址:
https://geo.datav.aliyun.com/areas_v3/bound/100000_full.json

导入数据绘图

#BiocManager::install("hchinamp")
setwd("E:\\小杜的生信筆記\\2023\\20230815-中国地图")
library(sf)
library(ggplot2)
china_map <- st_read("quanguo_Line.geojson.json")
china_map
plot(china_map['name'])

ggsave("ChinaMap.pdf", width =  8, height = 6)

简单的代码就可以绘制出来,这只是基础图形,如果你要美化,你需要花费很多的时间。



往期文章:

1. 最全WGCNA教程(替换数据即可出全部结果与图形)


2. 精美图形绘制教程

3. 转录组分析教程


小杜的生信筆記,主要发表或收录生物信息学的教程,以及基于R的分析和可视化(包括数据分析,图形绘制等);分享感兴趣的文献和学习资料!!

上一篇下一篇

猜你喜欢

热点阅读