R语言ggplot绘制时间序列图所有线条为灰色无法修改问题咨询
问题原因
你在代码中调用scale_color_manual()时仅配置了limits参数指定图例的分类顺序,没有传入values参数定义每个分类对应的颜色取值,ggplot无法找到匹配的颜色映射规则,就会默认将所有分类的线条渲染为灰色。
解决方法
给scale_color_manual()补充values参数,传入与分类数量对应的颜色向量即可,示例修改后的代码如下:
graf2 <- ggplot(graf) + aes(x = Periodo, y = value, color = variable) + geom_line(lwd = 1) + scale_color_manual(name = "", limits = c("Índice precio de las exportaciones", "Índice precio de las importaciones", "Índice precio de las materias primas", "Índide términos de intercambio"), # 新增values参数,可自行替换为需要的颜色值 values = c("#E41A1C", "#377EB8", "#4DAF4A", "#984EA3")) + scale_x_date(name = "Año", breaks = seq.Date(min(graf$Periodo), max(graf$Periodo), by = "1 year"), date_labels = "%Y") + scale_y_continuous("Valores índices") + theme(panel.background = element_rect(fill = "transparent"), panel.grid.major = element_line(color = "lightgray", size = 0.05), legend.position = "bottom")
其他排查建议
如果修改后仍存在颜色异常,可检查以下两点:
- 确认
graf数据框中variable列的分类取值与limits中填写的文本完全一致,包括重音符号、拼写差异(如limits中写的Índide是否和数据中实际存储的拼写匹配),匹配失败的分类会被判定为缺失值,默认渲染为灰色。 - 如果你不需要自定义配色,只想调整图例的分类顺序,也可以将
limits参数替换为breaks参数,无需手动指定颜色值,直接使用ggplot默认配色。
异常效果图

内容的提问来源于stack exchange,提问作者Franco Riottini
相关产品推荐
相关产品推荐

