无法更改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)