2017-07-30 127 views
1

我创建使用GGPLOT2以下情节: enter image description here无法更改线的颜色ggplot

现在我想蓝线是红色的虚线,我希望红线是一条黑线。我已经使用下面的代码以产生所述情节:

ggplot(data=SLLN, aes(x=X1, y=X2, group=1)) + 
    geom_line(aes(colour = "Variable name A")) +      
    geom_hline(aes(yintercept=theor_price, colour = "Variable name B")) + 
    geom_point(size=1) +      
    scale_x_log10(breaks = trans_breaks("log10", function(x) 10^x), #make log scale 
    labels = trans_format("log10", math_format(10^.x))) + 
    ylim(175, 250) +       
    scale_colour_hue(name="", l=30) +     
    (lightness=30) 
    scale_shape_manual(values=c(22,21)) +  
    scale_linetype_discrete() + 
    xlab("xlab") + ylab("ylab") + 
    ggtitle("Title name") +  
    theme_bw()+ 
    theme(legend.background = element_rect(fill="transparent"), 
    legend.position=c(.85, .7)) 

当我删除AES()在geom_line和geom_hline,并改变颜色的自变量为“黑色”和“红色”时,线具有色我想要,但它们从传奇中消失?我如何保持图像现在的样子,所以在图例中,只更改线条的颜色并使水平线虚线?

预先感谢您!

+0

为了得到一个传说,你需要颜色映射在'aes'里面。对于一条虚线来说:'geom_hline(aes(yintercept = 1,color =“变量名称B”),lty = 2)'。为了得到你想要的颜色,除去'scale_colour_hue'语句并添加'scale_colour_manual(name =“”,values = c(“black”,“red”))''。 – eipi10

+0

[this SO answer](https://stackoverflow.com/a/44771265/496488)中的讨论可能有助于理解将事物放在'aes'内部或外部之间的区别。 – eipi10

回答

1

的AES()函数映射变量的审美属性不改变geoms的属性,你必须指定外面那些AES()函数,就像这样:

ggplot(data=SLLN, aes(x=X1, y=X2, group=1)) + 
     geom_line(aes(colour = "Variable name A")) +      
     geom_hline(aes(yintercept=6, colour = "Variable name B"), linetype="dashed") + 
     scale_color_manual(values = c("black","blue")) + 
     ... (the rest of your code)