Как напечатать вывод карты Google в PDF в 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, но она не работает для этого. Не уверен в "wkhtmltopdf", так как это другой инструмент.
Пожалуйста, помогите мне с любыми указателями, чтобы получить вывод в формате PDF.
Спасибо Кемен
1 ответ
Вот возможное альтернативное решение с использованием 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 файл. Вы можете использовать R markdown, если вы хотите поместить png в PDF с другими результатами анализа. Вот png, который он создал (вы можете сделать его любого размера, изменив параметры width/height:
Вы также можете установить прямоугольник отсечения, чтобы избавиться от элементов управления слева (и это очень удобный для Google ответ).