r - 将单点添加到 levelplot
问题描述
我试图帮助一个朋友制定一个阴谋,但最终陷入困境。他想在水平图上绘制样本位置。光栅来自包unmarked
。( data(Switzerland)
)。我用一个虚拟数据框尝试过,我随机选择了一些位置。
我发现了以下问题Add XY points to raster map generated by levelplot这或多或少是我想做的。
所以我尝试了以下代码:
x <- c("980000", "1100000", "1200000")
y <- c("120000", "170000", "100000")
name <- c("a", "b", "c")
dummy <- as.data.frame(cbind(x, y, name))
levelplot(elevation ~ x + y, Switzerland, aspect="iso",col.regions=terrain.colors(100)) +
layer(sp.points(dummy, cex=2, col=1))
但我最终收到一条错误消息
Error in .local(obj, ...) : any(sp) is not TRUE
我试图了解sp.points()
需要什么样的输入以及我做错了什么,但失败了。
解决方案
转换dummy
为sp
-object,即SpatialPointsDataFrame
在您的情况下为 a:
R> library("sp")
R> dummy <- data.frame(x = as.numeric(x), y = as.numeric(y), name = name)
R> coordinates(dummy) <- ~ x + y
R> class(dummy)
[1] "SpatialPointsDataFrame"
attr(,"package")
[1] "sp"
可重现的例子:
library("sp")
library("lattice")
library("latticeExtra")
library("unmarked")
data(Switzerland)
x <- c(980000, 1100000, 1200000)
y <- c(120000, 170000, 100000)
name <- c("a", "b", "c")
dummy <- data.frame(x, y, name)
coordinates(dummy) <- ~ x + y
p <- levelplot(elevation ~ x + y, Switzerland,
aspect = "iso", col.regions = terrain.colors(100)) +
layer(sp.points(dummy, cex = 2, col = 1))
print(p)
推荐阅读
- javascript - 对于 click() 方法,for 循环不能正常工作
- awk - 在图案后提取线条
- javascript - 填充同一文档中的 FORM 字段的可点击链接(但具有多个 FORM)
- image-processing - 预测编码如何帮助无损压缩?
- sql - 如何查看在 SQL 中复制的内容
- sql-server - 对选定行进行累积计算的 SQL SELECT
- android - 如何通过可重用的 RecyclerView 适配器使用 SQLite 数据
- pandas - 在机器学习中缩放 ID 列?
- google-app-engine - 使用 GCP API 密钥限制对特定 GCP App Engine 服务的访问?
- django - 创建 django 查询集快照的最有效方法?