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

基于排名为散点图点着色:mtcars数据集散点图颜色配置咨询

解决mtcars散点图的分组颜色设置问题

当然可以实现你想要的效果!我来一步步给你拆解怎么做:

一、指定mpg最大值和最小值对应点的颜色

核心思路是先创建一个默认颜色的向量,再找到mpg最大、最小值对应的行索引,最后修改这些索引位置的颜色即可:

# 初始化颜色向量,默认设为你原来用的红色
color_vec <- rep("red", nrow(mtcars))

# 找到mpg最大值对应的行索引
max_mpg_pos <- which(mtcars$mpg == max(mtcars$mpg))
# 找到mpg最小值对应的行索引
min_mpg_pos <- which(mtcars$mpg == min(mtcars$mpg))

# 将最大值点设为绿色,最小值点设为你想要的颜色(比如蓝色)
color_vec[max_mpg_pos] <- "green"
color_vec[min_mpg_pos] <- "blue"

# 绘制散点图
plot(mpg ~ hp, col = color_vec, data = mtcars)

二、基于子组分配颜色(Top3/Bottom3高效车)

如果要把3辆mpg最高的车设为绿色,3辆最低的设为红色,其他点用默认颜色,我们可以通过排序来定位这些子组的索引:

基础版(无并列情况)

# 对mpg从高到低排序,获取对应的行索引
sorted_mpg_idx <- order(-mtcars$mpg)

# 提取Top3高效车的索引
top3_idx <- sorted_mpg_idx[1:3]
# 提取Bottom3低效车的索引
bottom3_idx <- sorted_mpg_idx[(nrow(mtcars)-2):nrow(mtcars)]

# 初始化颜色向量,默认用灰色(你可以换成任意喜欢的颜色)
color_vec <- rep("gray", nrow(mtcars))

# 给Top3设绿色,Bottom3设红色
color_vec[top3_idx] <- "green"
color_vec[bottom3_idx] <- "red"

# 绘图
plot(mpg ~ hp, col = color_vec, data = mtcars)

进阶版(处理mpg并列的情况)

如果存在多辆车mpg相同的情况(比如有4辆车并列Top3),用rank函数可以更准确地筛选出排名在前3和后3的车:

# 计算mpg的降序排名(数值越小排名越高)
mpg_rank <- rank(-mtcars$mpg)

# 筛选排名<=3的Top3车
top3_idx <- which(mpg_rank <= 3)
# 筛选排名>= (总数据量-2)的Bottom3车
bottom3_idx <- which(mpg_rank >= (nrow(mtcars)-2))

# 后续颜色设置和绘图和之前一致
color_vec <- rep("gray", nrow(mtcars))
color_vec[top3_idx] <- "green"
color_vec[bottom3_idx] <- "red"

plot(mpg ~ hp, col = color_vec, data = mtcars)

内容的提问来源于stack exchange,提问作者regents

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:46:34