Легенда о сюжете для нескольких камней двойной границы

Я использую это для карты, где я хочу, чтобы растровый слой, а также точечные данные отображались в легенде, расположенной на реальном графике в пустом пространстве карты. Однако, когда я делаю это, на некоторых сторонах легенды появляются странные линии с двумя границами, вероятно, потому, что размеры двух легенд не совпадают. Я не уверен, есть ли способ исправить два размера легенды, чтобы соответствовать, или иначе найти размер легенды и добавить мой собственный прямоугольник вокруг легенды. Вот упрощенная версия, которая создает ту же проблему. Я показал код, включая границу, а также тот, где нет границы, и вы можете видеть, что размеры легенды немного отличаются.

library(RColorBrewer)
library(ggplot2)
library(raster)

r = raster()
r[] = 1:ncell(r)

df = as.data.frame(r, xy=TRUE)

x <- sample(-75:75, 100)
y <- sample(-75:75, 100)
xy <- data.frame(cbind(x,y))

plot <- ggplot(df) +
  geom_raster(aes(x, y, fill=layer)) +
  geom_point(data=xy, aes(x=x, y=y, colour="Purple Points"))+
  scale_colour_manual(values = c("Purple Points"="purple"))+
  scale_fill_distiller(palette='RdYlGn')+
  theme(panel.background = element_rect(fill="white"),
        panel.border = element_rect(color="black", fill=NA, size=1.2),
        axis.text.x = element_blank(),
        axis.title.x = element_blank(),
        axis.ticks.x = element_blank(),
        axis.text.y = element_blank(),
        axis.title.y = element_blank(),
        axis.ticks.y = element_blank(),
        panel.grid = element_blank(),
        legend.box.background = element_rect(color='black', fill="white", size=1.5),
        legend.position = c(0.1,0.1),
        legend.justification = c(0,0),
        legend.key.height = unit(.25,"cm"),
        legend.key.width = unit(.6, "cm"),
        legend.title=element_text(size=8, vjust=2.5),
        legend.key = element_rect(colour = NA, fill = NA),
        legend.text = element_text(size=6),
        legend.spacing.y = unit(0, "cm"))
plot

Производит:

Участок со странной каймой

plot <- ggplot(df) +
  geom_raster(aes(x, y, fill=layer)) +
  geom_point(data=xy, aes(x=x, y=y, colour="Purple Points"))+
  scale_colour_manual(values = c("Purple Points"="purple"))+
  scale_fill_distiller(palette='RdYlGn')+
  theme(panel.background = element_rect(fill="white"),
        panel.border = element_rect(color="black", fill=NA, size=1.2),
        axis.text.x = element_blank(),
        axis.title.x = element_blank(),
        axis.ticks.x = element_blank(),
        axis.text.y = element_blank(),
        axis.title.y = element_blank(),
        axis.ticks.y = element_blank(),
        panel.grid = element_blank(),
        legend.position = c(0.1,0.1),
        legend.justification = c(0,0),
        legend.key.height = unit(.25,"cm"),
        legend.key.width = unit(.6, "cm"),
        legend.title=element_text(size=8, vjust=2.5),
        legend.key = element_rect(colour = NA, fill = NA),
        legend.text = element_text(size=6),
        legend.spacing.y = unit(0, "cm"))

Этот код исключает вызов legend.background() для темы и создает этот сюжет, где вы можете увидеть разные размеры двух легенд.

Без границ, но разные размеры легенды

0 ответов

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