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

关于gghighlight中min/max及正负谓词用法的技术咨询

关于gghighlight中min/max类谓词的高亮逻辑解析

我搞不懂gghighlight怎么处理min、max这类非逻辑谓词,也分不清下面四幅图的差异,调整-min、-max参数后还是摸不透它们的作用机制。

对应的R代码:

library(tidyverse)
library(gghighlight)
library(patchwork)

# 假设d是包含idx、value、type列的数据集
A <- ggplot(d, aes(idx, value, colour = type)) +
  geom_line() +
  gghighlight(max(value), max_highlight = 5L)

B <- ggplot(d, aes(idx, value, colour = type)) +
  geom_line() +
  gghighlight(-max(value), max_highlight = 5L)

C <- ggplot(d, aes(idx, value, colour = type)) +
  geom_line() +
  gghighlight(min(value), max_highlight = 5L)

D <- ggplot(d, aes(idx, value, colour = type)) +
  geom_line() +
  gghighlight(-min(value), max_highlight = 5L)

(A + B) / (C + D) + patchwork::plot_annotation(tag_levels = "A")

绘图结果:四幅子图以2×2布局排列,A、B为第一行,C、D为第二行。每幅图都包含多条彩色折线,其中5条折线被高亮显示,其余折线呈现淡化效果。

核心机制

当gghighlight()传入的是分组级数值表达式(而非逻辑判断)时,它的逻辑是:

  • 按aes()里的分组变量(这里是type)拆分数据;
  • 给每个分组计算表达式的结果,作为该分组的“得分”;
  • 把所有分组按得分从高到低排序;
  • 高亮前max_highlight个得分最高的分组,其余分组淡化。

四幅图的差异解析

  • 图A:用max(value)当得分,得分越高说明分组的峰值越大。因此高亮的是峰值最高的5个分组。
  • 图B:用-max(value)当得分,得分越高对应原分组的峰值越小(比如峰值为2的分组得分是-2,比峰值10的得分-10更高)。因此高亮的是峰值最低的5个分组。
  • 图C:用min(value)当得分,得分越高说明分组的谷值越大(整体数值不会太低)。因此高亮的是谷值最高的5个分组。
  • 图D:用-min(value)当得分,得分越高对应原分组的谷值越小(比如谷值为-5的分组得分是5,比谷值1的得分-1更高)。因此高亮的是谷值最低的5个分组。

内容的提问来源于stack exchange,提问作者a.sa.5969

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 04:26:08