Как напечатать вывод карты 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 ответ).

Другие вопросы по тегам