3

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

Shapefile 数据可以在这里找到

CSV文件可以在这里找到

我使用的代码如下:

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 创建了轮廓。如果不正确,有人可以建议我吗?

我得到的示例输出如下:

在此处输入图像描述

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

我想知道如何将标签添加到轮廓并控制轮廓间隔。

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

谢谢

贾巴巴

4

1 回答 1

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()

这给出了这个:

在此处输入图像描述

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

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

首先,绘制由 z 值着色的点。你应该看到这个:

在此处输入图像描述

这至少可以让您很好地了解正确的轮廓会是什么样子。

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

于 2013-01-17T09:50:08.520 回答