Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
401 views
in Technique[技术] by (71.8m points)

r - How to change angle of line in customized legend in ggplot2

I'm trying to add a customized legend to my ggplot but the legend boxes have lines at an angle. I want to change that angle to 0 degrees. Is there any way to do that? Following is the code for an example plot.

ggplot()+geom_abline(aes(color="black",,slope=1,intercept = 0))+
   geom_abline(aes(color="red",slope=0.5,intercept = 0))+
   scale_color_manual(values=c("black"="black","red"="red"))

We can see that the lines in the legend boxes are slightly inclined and I want to make them horizontal. enter image description here

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

You can change how the lines are drawn in the key: I changed y0 and y1 of the segmentsGrob, so that they are in the center (=0.5). (ps have a look at GeomAbline$draw_key before you change it)

library(ggplot2)
library(grid)

GeomAbline$draw_key <- function(data, params, size) 
{
    segmentsGrob(0, 0.5, 1, 0.5, gp = gpar(col = alpha(data$colour, 
        data$alpha), lwd = data$size * .pt, lty = data$linetype, 
        lineend = "butt"))
}  

ggplot() + geom_abline(aes(color="black",slope=1,intercept = 0))+
   geom_abline(aes(color="red",slope=0.5,intercept = 0))+
   scale_color_manual(values=c("black"="black","red"="red"))

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...