如何程序化高亮每个x值对应的y最大值(R语言ggplot2)
程序化提取每个x对应的y最大值并高亮绘图
你可以用dplyr(属于tidyverse套件)的分组聚合功能自动计算每个x对应的y最大值,完全不用手动输入。修改后的代码如下:
library(tidyverse) x <- c(1,1,1,1,1, 2,2,2, 3,3,3,3,3, 4,4, 5, 6,6,6,6,6,6) y <- c(10,11,12,13,14, 22,20,21, 8,12,14,15,18, 9,10, 5, 22,21,20,9,7,5) df <- data.frame(x,y) # 自动计算每个x对应的y最大值 specials <- df %>% group_by(x) %>% summarize(max_y = max(y)) %>% ungroup() # 可选,取消分组状态避免后续潜在问题 ggplot(df, aes(x, y)) + geom_point() + geom_line(data = specials, aes(x = x, y = max_y), color = "red", size = 1) # 自定义颜色、粗细增强高亮效果
关键逻辑说明
group_by(x):按照x的取值对数据集分组,将相同x的行归为一组summarize(max_y = max(y)):对每组自动计算y的最大值,生成包含x和对应最大值的新数据框- 不管数据集规模多大,这个逻辑都能自动遍历所有x的取值,无需手动查找或输入最大值
如果需要高亮最大值点而非连线,可替换或新增geom_point层:
geom_point(data = specials, aes(x = x, y = max_y), color = "red", size = 2)
内容的提问来源于stack exchange,提问作者S B
相关产品推荐
相关产品推荐

