我想创建一个轮廓,然后用多边形剪切轮廓,只显示多边形内的轮廓。
可以找到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
在这里,我创建了地图,点和轮廓。我不知道我使用的代码是否为变量z创建了轮廓。如果不正确可以有人建议我吗?
我得到的样本输出如下:
现在,我想剪切多边形内的轮廓并隐藏多边形外部的轮廓部分。
我想知道如何将标签添加到轮廓并控制轮廓间隔。
如果我的问题不明确,请告诉我。
谢谢
Jdbaba
答案 0 :(得分:2)
我无法准确地重现您的地图。你提供的代码给了我一张带有两组轮廓的地图 - 一个看起来像你的轮廓,另一个在区域的南部重叠。我怀疑这是你group
设置的人工制品。此外,我可以看到在我认为是湖的南部有一个岛屿。
我喜欢清理并将我的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()
这给出了这个:
现在这与你的轮廓看起来有很大不同,我不知道为什么。也许你的group参数是用相同的z对所有点进行分组?
无论如何,您似乎不想要密度图,您想要在您的区域上绘制Z值的地图。这将需要克里金法或其他一些插值技术。忘记ggplot一段时间,专注于数字。
对于初学者,绘制由z值着色的点。你应该看到这个:
至少可以让你很好地了解正确的轮廓是什么样的。
无论如何,这是一个全面的教程..