R语言技术协助:绘制同图多类别彩色散点图(NO2分位数vs Hb)
R语言绘制分类变量分位数分组的散点图
下面提供两种常用实现方式,均能将NO2按分位数分组后,用不同颜色展示每组与Hb的散点关系:
方法一:使用ggplot2包(推荐)
ggplot2是R中最常用的可视化工具,代码简洁且美观:
- 先加载包并对NO2进行分位数分组
# 加载包 library(ggplot2) # 假设你的数据集名为df,将NO2按四分位数分为4组(可调整probs参数改变分组数) df$NO2_quantile <- cut(df$NO2, breaks = quantile(df$NO2, probs = seq(0, 1, 0.25), na.rm = TRUE), include.lowest = TRUE, labels = c("Q1", "Q2", "Q3", "Q4"))
- 绘制散点图
ggplot(df, aes(x = NO2, y = Hb, color = NO2_quantile)) + geom_point(alpha = 0.7) + # alpha设置点的透明度,避免重叠遮挡 labs(title = "NO2分位数分组与Hb的散点关系", x = "NO2", y = "Hb", color = "NO2分位数") + theme_bw() # 使用简洁的黑白主题
方法二:使用基础绘图系统
如果你习惯用R基础绘图,可通过以下代码实现:
- 同样先对NO2进行分位数分组
# 分组为4个分位数区间 df$NO2_group <- ntile(df$NO2, 4) # 将分组转为因子,方便设置颜色和标签 df$NO2_group <- factor(df$NO2_group, labels = c("Q1", "Q2", "Q3", "Q4")) # 定义对应每组的颜色 group_colors <- c("red", "blue", "green", "orange")
- 逐步绘制散点图
# 先绘制第一组的散点 plot(df$NO2[df$NO2_group == "Q1"], df$Hb[df$NO2_group == "Q1"], col = group_colors[1], pch = 16, xlab = "NO2", ylab = "Hb", main = "NO2分位数分组与Hb的散点关系") # 依次叠加其他组的散点 points(df$NO2[df$NO2_group == "Q2"], df$Hb[df$NO2_group == "Q2"], col = group_colors[2], pch = 16) points(df$NO2[df$NO2_group == "Q3"], df$Hb[df$NO2_group == "Q3"], col = group_colors[3], pch = 16) points(df$NO2[df$NO2_group == "Q4"], df$Hb[df$NO2_group == "Q4"], col = group_colors[4], pch = 16) # 添加图例 legend("topright", legend = levels(df$NO2_group), col = group_colors, pch = 16, title = "NO2分位数")
注意事项
- 若数据存在缺失值,记得在计算分位数时加入
na.rm = TRUE参数 - 可根据需求调整分组数量(修改
seq(0,1,0.25)中的步长,比如改为0.2就是5组) pch参数可调整散点的形状,按需修改
内容的提问来源于stack exchange,提问作者skpak
相关产品推荐
相关产品推荐

