如何为同一画布中两个geom_step函数设置颜色编码并显示图例
问题原因
ggplot2 只有将颜色、线型这类美学参数放到 aes() 映射内,和分类变量绑定的时候,才会自动生成对应的图例。你之前直接在 geom_step 括号内设置 color = 颜色值 属于单独设置该图层的全局颜色,没有和分类变量绑定,因此不会触发生成图例的逻辑。
解决方案1(更推荐:合并为长格式数据绘图)
先把两个库存数据合并为同一个数据框,添加分组标识,直接映射颜色到分组变量即可自动生成图例:
library(tidyverse) # 合并两个数据集,统一列名并添加库存类型标识 df_combined <- bind_rows( Intento1 %>% mutate(库存类型 = "库存水平1"), Intento2 %>% rename(NivelI = Nivel2) %>% mutate(库存类型 = "库存水平2") ) # 绘图,自动生成图例 ggplot(df_combined, aes(x = Fecha, y = NivelI, color = 库存类型)) + geom_step() # 如需自定义颜色,可以追加scale_color_manual配置 # + scale_color_manual(values = c("库存水平1" = "#1f77b4", "库存水平2" = "#ff7f0e"))
解决方案2(不合并数据,直接修改原有代码)
如果不想调整数据结构,直接在两个geom_step的aes()内定义颜色对应的分类标签,再手动指定颜色映射即可:
ggplot() + geom_step(Intento1, mapping=aes(x=Fecha, y=NivelI, color = "库存水平1")) + geom_step(Intento2, mapping=aes(x=Fecha, y=Nivel2, color = "库存水平2")) + # 手动指定两个阶梯图的对应颜色、图例标题 scale_color_manual( name = "库存类型", values = c("库存水平1" = "深蓝色", "库存水平2" = "暗红色") )
两种方案都可以正常生成右侧的彩色图例,还可以根据需求调整图例标题、颜色取值等属性。
内容的提问来源于stack exchange,提问作者Francisco Daniel Quiroz
相关产品推荐
相关产品推荐

