1

我正在使用 openair 包中的 R 散点图绘制轨迹(纬度与经度)。使用“组”选项对轨迹进行分组时,不会绘制最后一组。这是一个示例代码:

df = data.frame(name = c(rep('C1',10),rep('C2',10),rep('C3',10),rep('C4',10)),
            lat = seq(1,100,2.5),
            lon = seq(101,200,2.5))
scatterPlot(df    ,x = "lon", y = "lat", group = "name",map = TRUE )
scatterPlot(df    ,x = "lon", y = "lat")

此外,尝试在后台绘制地图时出现错误:“使用数据包 1 时出错。长度为零的参数 i”

露天误差散点图

谢谢伊力克

4

1 回答 1

3

似乎是代码中的错误(基于 lattice::xyplot)。openair::scatterPlot看起来有点业余的代码:

# ------segment where `group` parameter is passed to lattice code ---
    id <- which(names(mydata) == group)
    names(mydata)[id] <- "MyGroupVar"
    plotType <- if (!Args$traj) 
        c("p", "g")
    else "n"
    if (method == "scatter") {
        if (missing(k)) 
            k <- NULL
        Type <- type
        xy.args <- list(x = myform, data = mydata, groups = mydata$MyGroupVar, 
            type = plotType, as.table = TRUE, scales = scales, 
    #---- end of extract

使用重命名分组变量的闪避然后使用 $ withmydata$MyGroupVar是一种技巧。应该更简单,更不容易出错mydata[[group]]。建议您要求修复错误。

如果您这样做,traceback()您可以看到生成数据包错误时传递的参数:

traceback() 4: xyplot.formula(x = lat ~ lon | 默认, data = list(lon = c(101, 103.5, 106, 108.5, 111, 113.5, 116, 118.5, 121, 123.5, 126, 128.5, 131 ,133.5、136、138.5、141、143、146、146、148.5、151、153、153、156、158.5、161、163、1633、166、168.5、171、171、173.5、176、178.5、178.5、181、181、1833.5、1833.5、186、188.5、1933.5 , 196, 198.5), lat = c(1, 3.5, 6, 8.5, 11, 13.5, 16, 18.5, 21, 23.5, 26, 28.5, 31, 33.5, 36, 38.5, 41, 43.5, 46, 48.5, 51, 53.5, 56, 58.5, 61, 63.5, 66, 68.5, 71, 73.5, 76, 78.5, 81, 83.5, 86, 88.5, 91, 93.5, 96, 98.5), 默认 = c(1L, 1L, 1L , 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L , 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), MyGroupVar = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L)), groups = "name", type = c( "p", "g"), as.table = TRUE,

(我认为)......“名称”周围的引号可能导致错误。它应该作为未引用的真实 R 名称/符号传递。

我认为你可以用普通的格子非常接近你想要的:

xyplot(data=df  ,  lon~lat, groups = name, auto.key=TRUE, grid=TRUE)

在此处输入图像描述

如果您需要对此进行调整,请参阅?xyplot

于 2016-03-04T00:14:57.973 回答