gpt4 book ai didi

r - 使用 ggplot 和 R 用多边形裁剪轮廓

转载 作者:行者123 更新时间:2023-12-04 11:44:20 27 4
gpt4 key购买 nike

我想创建一个轮廓,然后用多边形裁剪轮廓,只显示多边​​形内的轮廓。

可以查到Shapefile数据here

可以找到csv文件here

我使用的代码如下:

library("ggplot2")
library("rgdal")
library("gpclib")
library("maptools")
require(sp)

age2100 <- read.csv("temp.csv",header=TRUE, sep=",")
shape.dir <- "C:/Users/jdbaba/Documents/R working folder/shape" # use your directory name here

lon.shape <- readOGR(shape.dir, layer = "Export_Output_4")
str(lon.shape)

lon.df <- fortify(lon.shape, region = "Id")
p <- ggplot(lon.df, aes(x = long, y = lat, group = group)) +
geom_polygon(colour = "black", fill = "grey80", size = 1) +
theme()

p <- p + geom_point(data=age2100,aes(x=age2100$x,y=age2100$y,group="z"),size=0.1)
p <- p + geom_density2d(colour="red")
p

在这里,我创建了 map 、点和等高线。我不知道我使用的代码是否为变量 z 创建了轮廓。如果不正确,有人可以建议我吗?

我得到的示例输出如下:

enter image description here

现在,我想在多边形内剪裁轮廓并隐藏多边形外的轮廓部分。

我想知道如何给等高线加上标签,控制等高线的间隔。

如果我的问题不清楚,请告诉我。

谢谢

朱巴巴

最佳答案

我无法准确复制您的 map 。您提供的代码为我提供了一张包含两组等高线的 map - 一组看起来像您的等高线,另一组在该地区的南部与其重叠。我怀疑这是您的 group 设置的产物。另外,我可以看到在我认为是湖的南部有一个岛。

enter image description here

我喜欢清理我的 ggplot 内容并将其分成几部分,因为我经常发现 ggplot 调用早期的某些内容会混淆后面部分的内容。下面是我将如何映射区域、绘制点,然后添加密度等值线:

map <- function(){
geom_polygon(data=lon.df,aes(x=long,y=lat,group=piece),colour="black",fill="grey80",size=1)
}

points <- function(){
geom_point(data=age2100,aes(x=x,y=y),size=0.1)
}

density <- function(){
geom_density2d(data=age2100,aes(x=x,y=y),colour="red")
}

ggplot()+map() +points() +density()

这给出了这个:

enter image description here

现在这与您的轮廓看起来很不一样,我不知道为什么。也许你的组参数是用相同的 z 对所有点进行分组?

无论如何,您似乎不需要密度图,您想要一张您所在区域的 Z 值 map 。这将需要克里金法或其他一些插值技术。暂时忘掉 ggplot,专注于数字。

对于初学者,绘制由 z 值着色的点。你应该看到这个:

enter image description here

这至少会让您清楚地了解正确的轮廓应该是什么样子。

无论如何,这是一个完整的教程..

关于r - 使用 ggplot 和 R 用多边形裁剪轮廓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14373284/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com