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

如何为含多类型值的DataFrame绘制分类颜色散点图?

解决多类型散点图绘制问题

要实现每个类型对应不同颜色的散点图,核心是先把包含多值的types列拆分成长格式数据(每个ID的单个类型单独占一行),之后就能用常规的ggplot语法绘图了。

1. 拆分多值列

使用tidyr包的separate_rows()函数可以快速拆分逗号分隔的多值列:

library(tidyr)
library(ggplot2)

# 将types列按逗号拆分,生成每行对应单个类型的长数据
df_long <- separate_rows(df, types, sep = ",")

拆分后的数据示例:

ID   types  grade  num 
a01  a      7.1    1 
a01  b      7.1    1 
a01  c      7.1    1 
a02  c      7.7    3   
a02  d      7.7    3   
a03  c      7.3    4   
a04  a      7.9    5   
a04  c      7.9    5   
a04  f      7.9    5   
a05  a      6.7    3
a05  c      6.7    3
a05  e      6.7    3

2. 绘制散点图

用拆分后的长数据绘图,直接将types映射到颜色参数即可:

ggplot(df_long, aes(x = num, y = grade, colour = types)) +
  geom_point(size = 3) # 调整点大小提升可读性

如果想避免同一个ID的多个类型点完全重叠(和参考图效果更接近),可以给坐标添加微小的随机偏移:

ggplot(df_long, aes(x = num + rnorm(nrow(df_long), 0, 0.1), 
                    y = grade + rnorm(nrow(df_long), 0, 0.05), 
                    colour = types)) +
  geom_point(size = 3)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 14:40:16