如何在 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 可行的答案)。
目前我正在处理示例数据,我想在其中显示特定纬度和经度的指标计数。
数据如下:
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 可行的答案)。