如何用ggplot2在R中标记fastfood数据集钙属性的最大值点?
给钙属性最大值点添加红色圆圈标记的解决方案
你可以通过在原有散点图基础上额外叠加一层geom_point()来标记最大值点,这里提供两种实用方法:
方法一:直接基于数据值筛选
不需要依赖已计算的indices,直接在绘图时筛选出钙含量等于最大值的行,设置红色圆圈样式:
install.packages("openintro") library(openintro) install.packages("ggplot2") library(ggplot2) # 加载数据 data(fastfood) # 找出钙的最大值 max.calcium <- max(na.omit(fastfood$calcium)) ggplot(fastfood, aes(x=seq_along(calcium), y=calcium)) + geom_point() + # 绘制所有点 # 叠加最大值点的红色圆圈标记 geom_point(data = subset(fastfood, calcium == max.calcium), color = "red", size = 3, shape = 1) + # shape=1是空心圆圈,shape=16是实心点 xlab("Index") + ylab("Calcium") + ggtitle("Scatterplot of X vs Y with Outliers Highlighted") + theme_bw()
方法二:利用已计算的索引值
既然你已经算出了最大值的索引indices,可以直接用这个索引提取对应行数据来标记:
install.packages("openintro") library(openintro) install.packages("ggplot2") library(ggplot2) # 加载数据 data(fastfood) # 找出钙的最大值及其索引 max.calcium <- max(na.omit(fastfood$calcium)) indices <- which(fastfood$calcium == max.calcium, arr.ind = TRUE) ggplot(fastfood, aes(x=seq_along(calcium), y=calcium)) + geom_point() + # 使用索引筛选最大值点,添加红色圆圈 geom_point(data = fastfood[indices, ], color = "red", size = 3, shape = 1) + xlab("Index") + ylab("Calcium") + ggtitle("Scatterplot of X vs Y with Outliers Highlighted") + theme_bw()
小说明
shape=1是空心红色圆圈,如果你想要实心红点可以改成shape=16size=3可以根据需求调整标记的大小,数值越大标记越显眼
内容的提问来源于stack exchange,提问作者Pantaléon
相关产品推荐
相关产品推荐

