ggplot2使用manual标度与TeX命令导致图例标签重复问题
问题原因
你同时将color和linetype两个美学参数映射到了name变量,本应自动合并为一个图例,但latex2exp::TeX()返回的是带特殊属性的表达式对象,两次单独调用TeX()生成的标签对象属性存在差异,ggplot无法识别两组标签属于同一个图例,因此将颜色、线型的两个图例拼接展示,就出现了4个重复标签的问题。
解决方法
提前预定义统一的标签对象,让两个scale复用同一组标签,ggplot即可正确合并图例:
library(latex2exp) library(tidyverse) # 预定义统一的LaTeX标签,避免重复调用TeX生成不同对象 plot_labels <- unname(TeX(c("MSHAR-ReCov$^{+}$", "MSHAR-ReCov$^{-}$"))) ggplot(Data, aes(x = Date, y=value, colour = name, linetype = name)) + geom_line() + theme_test() + scale_color_manual(values = c("burlywood", "blue3"), labels = plot_labels ) + scale_linetype_manual(values = 1:2, labels = plot_labels ) + theme(axis.text.x = element_text(angle = 45, hjust = 1), legend.position = "bottom", legend.title = element_blank())+ labs(x = "", y="")
内容的提问来源于stack exchange,提问作者Eve Chanatasig
相关产品推荐
相关产品推荐

