You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 09:57:03