Легенда о дополнительных точках в ggplot - PullRequest
0 голосов
/ 29 мая 2018

В качестве примера этого вопроса ( Ссылка ) я хочу спросить, возможно ли добавить дополнительную синюю точку к легенде?

dat <- data.frame(cond = rep(c("A", "B"), each=10),
              xvar = 1:20 + rnorm(20,sd=3),
              yvar = 1:20 + rnorm(20,sd=3))
g1 <- dat[15,]

ggplot(dat, aes(x = xvar, y = yvar, shape = cond, 
                     colour = cond), size = 2.5) + 
geom_point(alpha = 1) +
geom_point(data = g1, colour = "blue", size = 4, show_guide = FALSE)

enter image description here

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Вы можете поместить эстетику для слоя дополнительных точек внутри aes, а не снаружи, чтобы добавить его к легенде.Вы можете использовать любое строковое значение;эта строка будет именем в легенде.

Затем вы можете контролировать цвет и форму этой точки с помощью scale_*_manual слоев.

Я дополнительно изменил размер этой точки в легендеиспользуя override.aes, что необязательно.

ggplot(dat, aes(x = xvar, y = yvar, shape = cond, 
                colour = cond), size = 2.5) + 
     geom_point(alpha = 1) +
     geom_point(data = g1, aes(colour = "Point 15", shape = "Point 15"), size = 4) +
     scale_shape_manual(values = c(16, 17, 17) ) +
     scale_color_manual(values = c("pink", "turquoise", "blue") ) +
     guides(color = guide_legend( override.aes = list(size = c(1.5, 1.5, 4) ) ) )

enter image description here

0 голосов
/ 29 мая 2018

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

dat <- data.frame(cond = rep(c("A", "B"), each=10),
          xvar = 1:20 + rnorm(20,sd=3),
          yvar = 1:20 + rnorm(20,sd=3))
dat$size = 2.5
dat[15,]$cond = "C"
dat$cond = as.character(dat$cond)
dat[15,]$size = 4

ggplot(dat, aes(x = xvar, y = yvar, shape = cond, 
                 colour = cond, size=size)) + 
geom_point(alpha = 1) +
scale_colour_manual(values=c("red", "turquoise", "blue")) +
scale_size_continuous(guide = FALSE)
...