Легенда о сюжете для нескольких камней двойной границы - PullRequest
0 голосов
/ 01 февраля 2019

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

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 with strange border

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 () для темы и создает этот график, на котором вы можете видетьразные размеры двух легенд.

No border, but different legend sizes

...