R语言,泰森多边形,沃罗诺伊地图

R语言,泰森多边形,沃罗诺伊地图


Snipaste_2021-02-10_17-46-10.png
Snipaste_2021-02-10_17-42-37.png
Snipaste_2021-02-10_17-43-18.png
Snipaste_2021-02-10_17-43-57.png
Snipaste_2021-02-10_17-44-24.png
Snipaste_2021-02-10_17-44-37.png
Snipaste_2021-02-10_17-45-35.png
Snipaste_2021-02-10_17-45-58.png
Snipaste_2021-02-10_17-46-34.png
Snipaste_2021-02-10_17-47-14.png
Snipaste_2021-02-10_17-47-32.png
# Wed Feb 10 15:21:02 2021 -

# 字符编码:UTF-8
# R 版本:R x64 4.0.3 for window 10
# cgh163email@163.com
# 个人笔记不负责任
# —— 拎了个梨🍐✨
rm(list=ls());gc()
.rs.restartR()

# 随机数模拟坐标散点:
province_city <- data.frame(lat=runif(100,22,23), #生成n个大于min,小于max的随机数 )
                            lon=runif(100,113,114) ) #生成n个大于min,小于max的随机数
province_city$size<-round(runif(100,5,50),2) #添加连续数值变量
province_city$type<-factor(sample(LETTERS[1:5],100,replace=TRUE)) #添加因子变量以便之后演示
co<-substr(rainbow(100),1,7)
province_city<-data.frame(province_city,co)
head(province_city)
# lat lon size type co
# 1 22.29912 113.0790 8.52 D #FF0000
# 2 22.24431 113.8137 5.54 E #FF0F00
# 3 22.42181 113.3822 8.90 D #FF1F00
# 4 22.93777 113.8022 6.28 E #FF2E00
# 5 22.26449 113.1979 7.74 E #FF3D00
# Sun Jan 31 19:55:55 2021 --随机数模拟完毕


library(deldir)
rmd <- deldir(province_city$lat,province_city$lon)

plot.deldir(rmd)
text(province_city$lat,province_city$lon,province_city$type)

# Wed Feb 10 16:23:23 2021 ----ex--------------------------

x <- c(2.3,3.0,7.0,1.0,3.0,8.0) + 0.5
y <- c(2.3,3.0,2.0,5.0,8.0,9.0) + 0.5
dxy <- deldir(x,y,dpl=list(x=c(1,10,10,1),y=c(1,1,10,10)),rw=c(0,11,0,11))
plot(dxy)
#打印细分,但不保存结果:
deldir(x,y,dpl=list(x=c(1,10,10,1),y=c(1,1,10,10),rw=c(0,11,0,11)),plot=TRUE,
       wl='tess',cmpnt_col=c(1,1,2,3,4,5),num=TRUE)

#打印三角剖分,但不打印细分或点,并保存返回的结构:

dxy <- deldir(x,y,dpl=list(x=c(1,10,10,1),y=c(1,1,10,10)),rw=c(0,11,0,11),plot=TRUE,
              wl='triang',wp="none")

#绘制所有内容:
plot(dxy,cmpnt_col=c("orange","green","red","blue","black","black"),cmpnt_lty=1,
     number=TRUE,nex=1.5,pch=c(19,9),showrect=TRUE,axes=TRUE)
# 复杂例子:“语言距离”。
vldm <- c(308.298557,592.555483,284.256926,141.421356,449.719913,
          733.976839,591.141269,282.842712,1.414214,732.562625)
ldm <- matrix(nrow=5,ncol=5)
ldm[row(ldm) > col(ldm)]  <- vldm
ldm[row(ldm) <= col(ldm)] <- 0
ldm <- (ldm + t(ldm))/2
rownames(ldm) <- LETTERS[1:5]
colnames(ldm) <- LETTERS[1:5]

# Data to be triangulated.
id <- c("A","B","C","D","E")
x  <- c(0.5,1,1,1.5,2)
y  <- c(5.5,3,7,6.5,5)
dat_Huang <- data.frame(id = id, x = x, y = y)

# Form the triangulation/tessellation.
dH <- deldir(dat_Huang)

# Plot the triangulation with line widths proportional
# to "linguistic distances".
all_col <- rainbow(100)
i       <- pmax(1,round(100*vldm/max(vldm)))
use_col <- all_col[i]
ind     <- as.matrix(dH$delsgs[,c("ind1","ind2")])
lwv <- ldm[ind]
lwv <- 10*lwv/max(lwv)
plot(dH,wlines="triang",col=use_col,wpoints="none",
     lw=lwv,asp=NA)
with(dH,text(x,y,id,cex=1.5))

# Wed Feb 10 16:29:02 2021 --手动函数----------------------------

voronoipolygons = function(layer) {
  require(deldir)
  crds = layer@coords
  z = deldir(crds[,1], crds[,2])
  w = tile.list(z)
  polys = vector(mode='list', length=length(w))
  require(sp)
  for (i in seq(along=polys)) {
    pcrds = cbind(w[[i]]$x, w[[i]]$y)
    pcrds = rbind(pcrds, pcrds[1,])
    polys[[i]] = Polygons(list(Polygon(pcrds)), ID=as.character(i))
  }
  SP = SpatialPolygons(polys)
  voronoi = SpatialPolygonsDataFrame(SP, data=data.frame(x=crds[,1],
                                                         y=crds[,2], row.names=sapply(slot(SP, 'polygons'),
                                                                                      function(x) slot(x, 'ID'))))
}

# Wed Feb 10 16:29:51 2021 --
library(rgdal)
dsn <- system.file("vectors", package = "rgdal")[1]
cities <- readOGR(dsn=dsn, layer="cities")

v3 <- st_as_sf(province_city,coords = c("lat", "lon"),crs = 4326) # 数据框转sf对象散点

v <- voronoipolygons(nc.sp <- as(v3, "Spatial") )

plot(v)
# Wed Feb 10 17:46:19 2021 ---gg作图---------------------------

require(sf)
require(ggplot2)

v2 <- st_as_sf(v)
ggplot()+
  geom_sf(data = v2)


# Wed Feb 10 17:01:06 2021 -----数据框演示-------------------------

dat <- data.frame(x=runif(10), y=runif(10))
dat <- SpatialPoints(dat)
v2 <- voronoipolygons(dat)
plot(v2)

# Wed Feb 10 17:03:57 2021 ---------dismo包---------------------
library(dismo)
library(rgdal)
cities <- shapefile(file.path(system.file("vectors", package = "rgdal")[1], "cities"))
par(mfrow=c(2,1))
plot(cities)
v <- voronoi(cities)
plot(v)

# Wed Feb 10 17:05:19 2021 --
data.frame(runif(50),runif(50)) %>%
  SpatialPoints() %>%
  voronoi() %>%
  plot()


dt <- data.frame(runif(50),runif(50)) %>%
  SpatialPoints() %>%
  voronoi()
qplot () +  borders ( dt ,size=0.5)

# Wed Feb 10 17:38:28 2021 --end


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 226,979评论 6 528
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 97,750评论 3 412
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 174,647评论 0 373
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 62,299评论 1 307
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 71,104评论 6 405
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 54,623评论 1 320
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 42,716评论 3 434
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 41,873评论 0 285
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 48,380评论 1 330
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 40,344评论 3 354
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 42,496评论 1 365
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 38,055评论 5 355
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 43,756评论 3 343
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 34,146评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 35,410评论 1 281
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 51,072评论 3 386
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 47,485评论 2 370

推荐阅读更多精彩内容