Изменение квадратов в точках легенды - ggplot R - PullRequest
0 голосов
/ 10 марта 2020

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

ggplot(data.frame(x=rnorm(7), y=rnorm(7)), aes(x,y))+
geom_point(aes(shape = "Points"), size=1.4)+
geom_point(data = data.frame(x=rnorm(1),y=rnorm(1)), aes(shape="Square"), size = 1.9, stroke = 1.7) +
coord_cartesian(xlim = c(-3,3),ylim = c(-3,3))+
scale_shape_manual(name = "Shape", values = c(16,0))

Точка квадратной формы на графике в порядке, но та, что в легенде, толще, чем точка на графике. Точнее, он выглядит толще, но на самом деле у него есть второй тонкий внутренний квадрат, который я вижу при экспорте графика с помощью tikzDevice (см. Следующий pi c).

Legend points difference

Проблема сохраняется даже при попытке изменить форму в легенде следующим образом:

guides(shape = guide_legend(override.aes = list(shape=c(16,0))))

Можете ли вы помогите мне увидеть, как получить точку в легенде, чтобы она просто выглядела как форма точки 0?

Ответы [ 2 ]

1 голос
/ 10 марта 2020

Вы можете переопределить ширину обводки в легенде; если вы установите его на 1, вы получите два идеально наложенных квадрата (если вы установите его на NULL, 0 или NA, вы вообще ничего не получите):

library(ggplot2)
set.seed(1)
ggplot(data.frame(x = rnorm(7), y = rnorm(7)), aes(x, y)) +
    geom_point(aes(shape = "Points"), size = 1.4) +
    geom_point(
        data = data.frame(x = rnorm(1), y = rnorm(1)),
        aes(shape = "Square"),
        size = 1.9,
        stroke = 1.7
    ) +
    coord_cartesian(xlim = c(-3, 3), ylim = c(-3, 3)) +
    scale_shape_manual(name = "Shape", values = c(16, 0)) +
    guides(shape = guide_legend(override.aes = list(size=c(1, 1.4), stroke = 1)))

Создано в 2020-03-10 пакетом Представления (v0.3.0)

0 голосов
/ 10 марта 2020

ты пробовал одну из тем? + theme_economist () может решить проблему с легендой

...