无法更改ggplot中线条的颜色

Posted

技术标签:

【中文标题】无法更改ggplot中线条的颜色【英文标题】:Cannot change colors of lines in ggplot 【发布时间】:2018-01-06 05:24:25 【问题描述】:

我使用 ggplot2 创建了以下绘图:

现在我希望蓝线是红色虚线,我希望红线是黑线。我已经使用以下代码来制作情节:

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)) 

当我删除 geom_line 和 geom_hline 中的 aes() 并将颜色参数更改为“黑色”和“红色”时,线条具有我想要的颜色,但它们从图例中消失了?我怎样才能保持现在的图像,所以与图例一样,只改变线条的颜色并使水平线虚线?

提前谢谢你!

【问题讨论】:

要获得图例,您需要将颜色映射放在aes 中。对于虚线:geom_hline(aes(yintercept=1, colour = "Variable name B"), lty=2)。要获得您想要的颜色,请去掉 scale_colour_hue 语句并添加 scale_colour_manual(name="", values=c("black","red")) this SO answer 中的讨论可能有助于理解将东西放在内部或外部aes 之间的区别。 【参考方案1】:

aes() 函数用于将变量映射到美学属性而不是更改几何属性,您必须在 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)

【讨论】:

以上是关于无法更改ggplot中线条的颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何更改geom_point中的颜色或ggplot中的线条[重复]

如何根据列值更改线条的颜色

R语言R原生以及ggplot2设置线条类型宽度(粗细)颜色的函数ggplot2手动自定义设置线条类型粗细颜色函数(line typesthicknesscolour)

为线条 ggplot2 分配颜色

无法在 MATLAB 图中更改线条颜色

在 ggplot 中结合颜色和线型图例