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

如何修改emmip绘图的图例标签名称与显示顺序?

问题描述

使用emmip绘制交互图时,已成功修改面板标签与X轴标签,但无法修改图例的标签名称及显示顺序。预期图例标题为**"Phonemes by Cognate Status",图例项标签为"/k/ - Cognate"、"/k/ Noncognate"**等类型。当前绘图代码如下:

###{r HS in CS interaction plot with pre switch syllable count vs phoneme }
(mylist <- list(
    Syl_Pre_Switch = seq(7,12,by=1),
    phoneTxtGrid=c("p","t","k"), 
    CogStatus=c("Cog", "Cag")))

emmip(modelHSCSwithDistance, phonemeTxtGrid*CogStatus ~ Syl_Pre_Switch,
      at=mylist, CIs = TRUE) +  
    ggplot2::facet_grid(~factor(phonemeTxtGrid, 
                        levels=c('p', 't', 'k'))) + 
        xlab("Syllables After Cognate") + 
        labs(fill = "Stops by Cognate Status")

曾尝试添加scale_color_discrete()但未成功修改图例标签名称。

解决方法

核心原因

emmip生成的图例映射的是phonemeTxtGrid*CogStatus这个交互因子,而非单独的fill属性,因此之前用labs(fill = ...)无法生效,需要针对交互项对应的color和linetype(默认绘图用这两个美学区分组)进行修改。

具体步骤与代码

  1. 先确认交互项的现有水平顺序(避免标签对应错误):
# 查看交互因子的水平顺序
interact_levels <- levels(emmeans::emmeans(modelHSCSwithDistance, ~phonemeTxtGrid*CogStatus))$phonemeTxtGrid:CogStatus
  1. 按照水平顺序定义自定义标签,再通过scale_color_discrete()和scale_linetype_discrete()同步修改图例标题与标签:
###{r HS in CS interaction plot with pre switch syllable count vs phoneme }
mylist <- list(
    Syl_Pre_Switch = seq(7,12,by=1),
    phoneTxtGrid=c("p","t","k"), 
    CogStatus=c("Cog", "Cag"))

# 定义自定义标签,顺序与交互项水平严格对应
custom_labels <- c(
    "/p/ - Cognate", "/p/ Noncognate",
    "/t/ - Cognate", "/t/ Noncognate",
    "/k/ - Cognate", "/k/ Noncognate"
)

emmip(modelHSCSwithDistance, phonemeTxtGrid*CogStatus ~ Syl_Pre_Switch,
      at=mylist, CIs = TRUE) +  
    ggplot2::facet_grid(~factor(phonemeTxtGrid, levels=c('p', 't', 'k'))) + 
    xlab("Syllables After Cognate") + 
    # 修改颜色图例的标题与标签
    scale_color_discrete(
        name = "Phonemes by Cognate Status",
        labels = custom_labels
    ) +
    # 修改线型图例的标题与标签(与颜色图例同步,避免出现两个图例)
    scale_linetype_discrete(
        name = "Phonemes by Cognate Status",
        labels = custom_labels
    )

额外说明

如果需要调整图例项的显示顺序,只需调整custom_labels的顺序,同时确保与修改后的交互因子水平顺序一致(可通过relevel()提前调整交互因子的水平)。

内容的提问来源于stack exchange,提问作者Hernán Rosario

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 16:15:44