如何在ggplot2中为指定连续变量设置对应线条颜色与尺寸
实现指定线条颜色与尺寸的修改方案
方案一:直接在各geom_line中设置(简单直接,但若需图例匹配建议用方案二)
如果你只是想快速设置线条颜色和尺寸,可直接在每个geom_line函数里添加color和size参数:
ggplot ()+ # SDI Total:黑色线条,尺寸1.2 geom_point(data=data, aes(x=time, y=SDI_Mean))+ geom_line(data=data, aes(x=time, y=SDI_Mean, col="SDI Total (Means)"), color="black", size=1.2)+ # Empathy:紫色线条,尺寸1.2 geom_point(data=data, aes(x=time, y=Empathy))+ geom_line(data=data, aes(x=time, y=Empathy, col="Empathy"), color="purple", size=1.2)+ # Positive激活情绪:黄色线条,尺寸1.2 geom_point(data=data, aes(x=time, y=Positive_Activating))+ geom_line(data=data, aes(x=time, y=Positive_Activating, col="Positive, Activating Emotions"), color="yellow", size=1.2)+ # Negative激活情绪:红色线条,尺寸1.2 geom_point(data=data, aes(x=time, y=Negative_Activating))+ geom_line(data=data, aes(x=time, y=Negative_Activating, col="Negative, Activating Emotions"), color="red", size=1.2)+ facet_grid(rows = vars(ID))+ labs(x = "Discussion", y = "Variable Counts")+ theme(legend.position = "bottom")+ theme_bw()
注意:这种方式下图例的颜色可能和实际线条不匹配,因为color参数覆盖了aes里的颜色映射。
方案二:用映射函数保证图例与线条一致(推荐)
要让图例颜色和实际线条完全对应,用scale_color_manual绑定分组名称与颜色,同时用scale_size_manual设置尺寸:
ggplot ()+ geom_point(data=data, aes(x=time, y=SDI_Mean))+ geom_line(data=data, aes(x=time, y=SDI_Mean, col="SDI Total (Means)", size="SDI Total (Means)"))+ geom_point(data=data, aes(x=time, y=Empathy))+ geom_line(data=data, aes(x=time, y=Empathy, col="Empathy", size="Empathy"))+ geom_point(data=data, aes(x=time, y=Positive_Activating))+ geom_line(data=data, aes(x=time, y=Positive_Activating, col="Positive, Activating Emotions", size="Positive, Activating Emotions"))+ geom_point(data=data, aes(x=time, y=Negative_Activating))+ geom_line(data=data, aes(x=time, y=Negative_Activating, col="Negative, Activating Emotions", size="Negative, Activating Emotions"))+ # 绑定颜色:按分组名称指定对应颜色 scale_color_manual( values = c( "Empathy" = "purple", "Negative, Activating Emotions" = "red", "Positive, Activating Emotions" = "yellow", "SDI Total (Means)" = "black" ) )+ # 绑定尺寸:可根据需求调整每个线条的粗细,这里统一设为1.2 scale_size_manual( values = c( "Empathy" = 1.2, "Negative, Activating Emotions" = 1.2, "Positive, Activating Emotions" = 1.2, "SDI Total (Means)" = 1.2 ) )+ facet_grid(rows = vars(ID))+ labs(x = "Discussion", y = "Variable Counts")+ theme(legend.position = "bottom")+ theme_bw()
补充说明
- 尺寸数值可自行调整(比如1.5更粗,1更细);如果不需要区分粗细,可删除
scale_size_manual段,在所有geom_line里加size=1.2即可; - 颜色也可用十六进制代码,比如
purple换成#9370DB,red换成#FF4500,颜色更精准; - 方案二的优势是图例和线条颜色、尺寸完全匹配,适合需要展示清晰图例的场景。
内容的提问来源于stack exchange,提问作者jeisman
相关产品推荐
相关产品推荐

