绘制世界地图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的分析和可视化(包括数据分析,图形绘制等);分享感兴趣的文献和学习资料!!