【问题标题】:Loading a raster data of map PNG on ggmaps of R在 R 的 ggmaps 上加载地图 PNG 的栅格数据
【发布时间】:2012-07-22 12:42:56
【问题描述】:

这将被交叉发布到 R 的邮件列表中。

我有一个 png 格式的地图,所以我不会使用 get_map 函数。 我已经从 png 中提取了栅格数据,我希望在 R 的显示上加载地图,然后我想在其上绘制一个点。

所以,这就是我尝试过ggmaps 的方式。该程序正在编译。这里的问题是没有显示任何输出。

library (png)
library (ggmap)

latitude  = c(40.702147,40.718217,40.711614)
longitude = c(-74.012318,-74.015794,-73.998284)

# Reads a PNG and outputs a raster array.
img <- readPNG (system.file ("img", "My.png", package="png"))

df <- data.frame (latitude, longitude)

# img: raster array read from the map png.
ggimage (img, fullpage = TRUE) + geom_point (data = df, aes_auto (df), size = 2)

qplot (latitude, longitude, data = df, colour = I("red"), size = I(3))

我当然做错了。请指出。

> sessionInfo()
R version 2.15.1 (2012-06-22)
Platform: x86_64-unknown-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=C                 LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] ggmap_2.1     ggplot2_0.9.1 png_0.1-4    

loaded via a namespace (and not attached):
 [1] colorspace_1.1-1   dichromat_1.2-4    digest_0.5.2       grid_2.15.1       
 [5] labeling_0.1       MASS_7.3-18        memoise_0.1        munsell_0.3       
 [9] plyr_1.7.1         proto_0.3-9.2      RColorBrewer_1.0-5 reshape2_1.2.1    
[13] RgoogleMaps_1.2.0  rjson_0.2.8        scales_0.2.1       stringr_0.6       
[17] tools_2.15.1      
> 

编辑:我发现了一个错误。 实际上我是第一次用source (uff.R) 运行它,这个命令没有显示任何错误。然后我尝试了Rscript

anisha@linux-y3pi:~> Rscript uff.R
Loading required package: ggplot2
Loading required package: methods
Error in eval(expr, envir, enclos) : object 'x' not found
Calls: print ... sapply -> lapply -> eval.quoted -> lapply -> FUN -> eval
Execution halted

【问题讨论】:

  • 如果您有两个单独的问题,请提出两个单独的问题,尤其是当它们完全不同时。
  • @PaulHiemstra 好的,我将删除第二个。
  • 请随意将您的第二个问题作为单独的问题重新发布
  • 如果它与地图相关,请将其发布到 R-sig-geo,而不是 R-help
  • @Spacedman 是的,当然,我已将其发布到 R-sig-geo。 :)

标签: r linux ggplot2 png ggimage


【解决方案1】:

您的ggimage 失败,因为其中没有xy。将您的经纬度坐标重命名为 x 和 y。这是一个完全可重现的示例。这是基本的 ggplot 内容:

> library(png)
> library(ggplot2)
> img <- readPNG(system.file("img", "Rlogo.png", package="png"))
> latitude  = c(40.702147,40.718217,40.711614)
> longitude = c(-74.012318,-74.015794,-73.998284)
> df <- data.frame (x=longitude,y=latitude)
> qplot(x,y,data = df, colour = I("red"), size = I(3))

在命令行上运行这些命令,您应该会看到一个绘图。失败的可能原因是:

  • 您的 R 没有与显示器的 X11 连接。这一切都在本地 Linux 机器上运行吗?你还没有连接到服务器?如果 R 不能弹出图形窗口,它可能会尝试创建一个 Rplots.pdf 文件。
  • 您正在运行的脚本未打印。将所有要在 print() 函数调用中生成输出的 ggplot、grid 和 lattice 图形函数包装起来。这是一个常见问题解答,我想。 Paul Hiemstra 将此作为答案,但随后将其删除...

【讨论】:

  • 谢谢,错误现在消失了。但是“显示窗口”仍然没有显示。 qplot 是否显示显示窗口?
  • OP 似乎以非交互方式运行代码。所以显示p &lt;- qplot(...); print(p) 可能很有用
  • @Andrie AHH,我确实已经将这段代码写在了一个文件中,并且我正在将该文件作为“source (uff.R)”执行。这是问题的原因吗?
  • @AnishaKaul 是的,这就是问题所在。这是一个常见问题解答:cran.r-project.org/doc/FAQ/…
  • @Andrie 谢谢,在问下一个问题之前会正确阅读常见问题解答。顺便说一句,我很高兴地图终于显示出来了。虽然我还不能画出任何点。但我会阅读更多内容。
【解决方案2】:

当调用基于grid 的绘图库(latticeggplot2)时,您需要明确地print 绘图,以便在交互式会话之外使用它时获得任何输出:

bla = ggplot(...)
print(bla)

或更短:

print(ggplot(...))

【讨论】:

  • 从 OP 的问题看来,代码是交互式运行的,所以我删除了我的答案。但结果没问题,所以我取消了它:)。
  • 就是这样,但是“point”功能不需要任何打印支持。我注意到了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-06-28
  • 1970-01-01
  • 2021-05-25
  • 1970-01-01
  • 1970-01-01
  • 2018-07-18
  • 2021-07-05
相关资源
最近更新 更多