如何在 R 中将 google 地图输出打印为 pdf

How to print google map output to pdf in R

目前我正在处理示例数据,我想在其中显示特定纬度和经度的指标计数。

数据如下:

count   latitude    longitude
1   -33.9742299 -59.2025543
1   -32.1833305 -64.4166718
1   40.069099   45.038189
0   43.1708104  -76.2904452
4   51.3105976  4.2649749
3   50.5296991  5.2614551
2   -22.9748764 -44.3036414
6   43.7755615  23.7246154
4   53.1732661  -112.0334845
4   46.315255   -63.325855
0   50.9302435  -113.986716
1   46.402735   -72.274846
0   49.224312   -122.9865026
4   43.8384117  -79.0867579
1   45.0679663  -66.4535262
2   23.132191   113.266531
0   19.912026   109.690508
1   30.4783192  120.9239947
0   39.084158   117.200983
4   49.0812519  16.1921789

library(plotGoogleMaps)
coordinates(nuc)<-~longitude+latitude
proj4string(nuc) <- CRS('+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs ')
pltmap<-plotGoogleMaps(nuc,filename='firstmp.htm', zcol='count'
                  , draggableMarker=FALSE, colPalette=c('#DC143C', '#FFD700', '#00FF00'))

引用自github-

现在我想将地图输出打印成 pdf。

检查了 pdf 功能,但它不适用于 this.Not 确定 'wkhtmltopdf' 要么因为它是其他工具。

请帮助我获得 pdf 格式的输出。

谢谢, 可门

这是使用 ggmap 包的可能的替代解决方案:

nuc <- read.table(text="count   latitude    longitude
1   -33.9742299 -59.2025543
1   -32.1833305 -64.4166718
1   40.069099   45.038189
0   43.1708104  -76.2904452
4   51.3105976  4.2649749
3   50.5296991  5.2614551
2   -22.9748764 -44.3036414
6   43.7755615  23.7246154
4   53.1732661  -112.0334845
4   46.315255   -63.325855
0   50.9302435  -113.986716
1   46.402735   -72.274846
0   49.224312   -122.9865026
4   43.8384117  -79.0867579
1   45.0679663  -66.4535262
2   23.132191   113.266531
0   19.912026   109.690508
1   30.4783192  120.9239947
0   39.084158   117.200983
4   49.0812519  16.1921789", header=TRUE, stringsAsFactors=FALSE)

library(ggmap)
library(ggthemes)

gmap <- get_map(location=c(longitude=mean(nuc$longitude), 
                           latitude=mean(nuc$latitude)), 
                zoom=3)

gg <- ggmap(gmap)
gg <- gg + geom_point(data=nuc, aes(x=longitude, y=latitude, size=count, fill=count), 
                      shape=21, color="black")
gg <- gg + scale_fill_distiller(palette="Reds")
gg <- gg + theme_map()
gg <- gg + theme(legend.position="right")
gg

这将生成以下内容,您应该可以很容易地在 PDF 中使用它们。

(您可能需要调整缩放级别等,因为我知道有些点没有显示在该缩放级别)

更新

因为我们是在审美,所以我觉得plotGoogleMaps情节看起来很糟糕。 但是如果你真的想用它来展示你的努力,你可以使用phantomjs(即你必须安装phantomjs)。在绘制地图后放置它(它依赖于正在保存的 html 文件):

cat("var page = require('webpage').create();
page.viewportSize = { width: 1280, height: 800 };
page.open('firstmp.htm', function() {
  window.setTimeout(function () {
    page.render('firstmp.png');
    page.render('firstmp.pdf', {format: 'pdf', quality: '100'});
    phantom.exit();
  }, 3000);
});", file="render.js")

system("phantomjs --ignore-ssl-errors=true render.js")

它需要 ~3 秒,因为它必须让地图图块加载。结果是一个 png 和一个 pdf 文件。如果你想将 png 放在 PDF 中,周围有其他分析结果,你可以使用 R markdown。这是它创建的 png(您可以通过更改 width/height 参数使其任意大小:

您还可以设置一个剪切矩形来摆脱左侧的控件(这是一个非常 google 可行的答案)。