Как создать карту с прозрачным фоном?

Я пытаюсь создать и сохранить карту с прозрачным фоном вместо белого (или любого другого цвета) с помощью пакета R tmap.

Помимо того, что показано в приведенном ниже примере, я пробовал использовать bg.color = "transparent", bg.color = NA и bg.color = NULL как в tmap_options, так и в tm_layout.

Информация о версии:

  • tmap: 2.2
  • tmaptools: 2.0-1
library(tmap)
data("World")

tmap_options (bg.color = "#00000000", basemaps.alpha = 0)
map <- tm_shape(World) +
  tm_polygons("HPI") +
  tm_layout (frame = FALSE, bg.color = "#00000000")

tmap_save (map, filename = "~/test.png")

Я что-то не так делаю или это просто ограничение пакета? Большое спасибо!


person karpfen    schedule 08.05.2019    source источник
comment
Используйте аргумент alpha в интересующем слое, например. tm_polygons("HPI", alpha = .5)   -  person adibender    schedule 08.05.2019
comment
Но это делает полигональный слой прозрачным, а не фоновый, если я правильно понимаю. Мне нужно, чтобы только фоновый слой был прозрачным.   -  person karpfen    schedule 08.05.2019
comment
Ну, зависит от того, что вы хотите сделать, но что такое фон в этом случае, если у вас есть только один слой?   -  person adibender    schedule 08.05.2019
comment
Вот в чем дело; фона нет. Я хочу только полигоны (+ легенда, заголовок и так далее) на 100% прозрачном фоне. В приведенном выше примере я хочу, чтобы все белое на полученном изображении исчезло.   -  person karpfen    schedule 08.05.2019
comment
если вы используете bg.color = rgb(0,0,0, alpha = 0)?   -  person adibender    schedule 08.05.2019
comment
Нет, также дает мне белый фон.   -  person karpfen    schedule 08.05.2019
comment
В tmap есть 2 режима карты - режим построения и режим просмотра. Кажется, что только в режиме просмотра отображаются фоновые изображения, такие как открытая карта улиц и т. Д. В режиме графика по умолчанию используется белый фон. Примеры по ссылке ниже наглядно показывают разницу между двумя режимами. rdocumentation.org/packages/tmap/versions/2.2/topics/tmap_mode< /а>. Может ли ваша проблема заключаться в том, что вы ожидаете формат, более похожий на режим просмотра, но работаете в режиме графика?   -  person olorcain    schedule 08.05.2019
comment
Спасибо, но это не решает мою проблему, к сожалению. Мне нужно, чтобы карта была статической, в формате PNG, поэтому режим графика имеет для меня гораздо больше смысла. Мне нужно только как-то заменить белый фон по умолчанию на прозрачный. Но для протокола: я также пытался использовать tmap_save в режиме просмотра, полученный файл PNG имел белый непрозрачный фон.   -  person karpfen    schedule 08.05.2019


Ответы (1)


Я нашел подвох!

Я искал ту же функцию, чтобы рисовать стопку карт в InDesign с выводами из R, tmap, и мне нужно было, чтобы фон был прозрачным.

Вот мое решение, учитывая ваш код:

library(tmap)
data("World")

par(bg=NA)
map <- tm_shape(World) +
  tm_polygons("HPI") +
  tm_layout (frame = FALSE, bg.color = "transparent")

tmap_save (map, filename = "~/test.eps", bg="transparent") # Note the eps extension

Предостережение: тестируя это с различными выходными форматами, я понял, что это не работает с png или jpg.

person edith    schedule 25.08.2019