R语言:如何用不同颜色绘制CSV多列数据
解决R语言绘制多列数据不同颜色散点图的问题
嗨,刚接触R语言就能画出单列散点图已经很棒啦!多列数据用不同颜色绘制其实没那么复杂,我给你分享两种新手友好的方法,你可以根据自己的习惯选:
方法一:用基础绘图系统(plot + points)
这种方法不需要额外装包,适合快速上手。核心思路是先画第一列数据,再用points()函数依次添加其他列,每列指定不同颜色。
假设你的CSV数据结构是这样的:
year, score1, score2, score3
2010, 85, 78, 92
2011, 88, 81, 90
...
对应的代码示例:
# 读取CSV文件(把路径换成你自己的文件路径) my_data <- read.csv("your_data.csv") # 先绘制第一列数据,设置坐标轴标签和点样式 plot( x = my_data$year, y = my_data$score1, col = "#E74C3C", # 红色 pch = 16, # 实心圆点 xlab = "年份", ylab = "分数", main = "不同类别分数散点图" ) # 添加第二列数据,用蓝色 points(my_data$year, my_data$score2, col = "#3498DB", pch = 16) # 添加第三列数据,用绿色 points(my_data$year, my_data$score3, col = "#2ECC71", pch = 16) # 最后添加图例,方便区分不同列 legend( "topright", # 图例位置,可换成"bottomleft"等 legend = c("分数1", "分数2", "分数3"), col = c("#E74C3C", "#3498DB", "#2ECC71"), pch = 16 )
方法二:用ggplot2包(更推荐,适合复杂数据)
ggplot2是R中最流行的绘图包之一,只要把数据转换成长格式,就能自动帮你分配颜色、生成图例,操作更省心。
步骤1:安装并加载必要的包
# 第一次使用时安装包 install.packages(c("ggplot2", "tidyr")) # 加载包 library(ggplot2) library(tidyr)
步骤2:读取数据并转换格式
把原来的“宽格式”(每列一个分数类型)转换成“长格式”(一列存分数类型,一列存分数值):
# 读取数据 my_data <- read.csv("your_data.csv") # 转换为长格式 long_data <- pivot_longer( data = my_data, cols = starts_with("score"), # 匹配所有以score开头的列,可换成具体列名如c("数学", "语文") names_to = "分数类型", # 新列名:存储原来的列名(比如score1) values_to = "分数" # 新列名:存储对应的分数值 )
步骤3:绘制散点图
ggplot(long_data, aes(x = year, y = 分数, color = 分数类型)) + geom_point(size = 3) + # 设置点的大小 labs( x = "年份", y = "分数", title = "不同类别分数散点图", color = "分数类别" # 修改图例标题 ) + theme_minimal() # 可选:用简约主题美化图表
小提示
- 如果你的年份列是字符类型(比如带引号),可以用
my_data$year <- as.numeric(my_data$year)转换成数值型,避免绘图出错。 - 颜色代码可以换成你喜欢的,比如直接写"red"、"blue",或者用十六进制颜色码更精准。
内容的提问来源于stack exchange,提问作者Kevin Choi




