Это происходит из-за поведения клавиш легенды. Это известная проблема, смотрите эту ветку GitHub https://github.com/tidyverse/ggplot2/issues/2844. На этом сайте также предлагается исправление, позвольте мне показать это здесь.
library(tidyverse)
ggplot(mtcars) +
aes(fill=factor(cyl), x=cyl) +
geom_bar(color = 'black') +
guides(fill=guide_legend(title.position = "left")) +
theme(legend.key = element_rect(color="white") +
legend.position = c(0.2, 0.7))
Увеличено, легенда теперь будет выглядеть так:
Теперь давайте сделаем исправить.
draw_key_polygon3 <- function(data, params, size) {
lwd <- min(data$size, min(size) / 4)
grid::rectGrob(
width = grid::unit(0.7, "npc"),
height = grid::unit(0.7, "npc"),
gp = grid::gpar(
col = data$colour,
fill = alpha(data$fill, data$alpha),
lty = data$linetype,
lwd = lwd * .pt,
linejoin = "mitre"
))
}
GeomBar$draw_key = draw_key_polygon3
ggplot(mtcars) +
aes(fill=factor(cyl), x=cyl) +
geom_bar(color = 'black') +
guides(fill=guide_legend(title.position = "left")) +
theme(legend.key = element_rect(color="white", fill = 'white'),
legend.position = c(0.2, 0.7))
Но что на самом деле здесь происходит ? Посмотрим!
ggplot(mtcars) +
aes(fill=factor(cyl), x=cyl) +
geom_bar(color = 'black') +
guides(fill=guide_legend(title.position = "left")) +
theme(legend.position = c(0.2, 0.7),
legend.key = element_rect(color="black", fill = 'white'))
Легенда имеет две границы! Один для символа легенды, другой для ключа. Вы рисуете границу для ключа с вызовом theme
, и граница вокруг глифа создается с вашим цветным аргументом в geom_bar
Создано в 2020-04-04 пакетом Представ (v0.3.0)