#r #ggplot2 #patchwork
#r #ggplot2 #пэчворк
Вопрос:
Я пытаюсь создать небольшую карту, встроенную в большую карту, используя функцию inset_element() из пакета patchwork.
Я получаю эту ошибку при попытке вставить карту:
Error in seq.default(design$t[i], design$b[i]) :
'from' must be a finite number
вот пример:
library(patchwork)
library(sf)
library(ggplot2)
library(rnaturalearth)
world <- rnaturalearth::ne_countries(scale='medium',returnclass = 'sf')
p1 <- ggplot()
geom_sf(data= world)
p2 <- ggplot()
geom_point(data = iris, aes(x= Petal.Width, y = Petal.Length))
# 2 maps = fail
p1 inset_element(p1, left =0.75, right =0.95, bottom = 0.75, top =0.95)
# 1 map as "main" = success
p1 inset_element(p2, left =0.75, right =0.95, bottom = 0.75, top =0.95)
# 1 map as "inset" = fail
p2 inset_element(p1, left =0.75, right =0.95, bottom = 0.75, top =0.95)
packageVersion("patchwork")
Ответ №1:
inset_element
похоже, это новая функция в patchwork, и я думаю, вы обнаружили ошибку, которая также затронула других пользователей. Ошибка выдается в этой строке в set_panel_dimensions
, которая вызывается только при попытке распечатать (а не создать) этот объект patchwork:
fail <- p2 inset_element(p1, left =0.75, right =0.95, bottom = 0.75, top =0.95)
fail
#> Error in seq.default(design$t[i], design$b[i]) :
#> 'from' must be a finite number
Однако мы можем пока обойти эту ошибку, установив высоту и ширину макета для patches
объекта равными 1:
fail$patches$layout$widths <- 1
fail$patches$layout$heights <- 1
fail
Я ссылался на этот ответ в теме patchwork github issues, упомянутой выше.