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

ggplot2绘制散点图时的颜色分段设置问题

ggplot2散点图按r2区间设置颜色的问题解决

需求说明

绘制z.df1与z.df2的散点图,并按以下r2区间为点设置对应颜色:

  • r2 >= 0.8:红色
  • 0.6 < r2 < 0.8:橙色
  • 0.4 < r2 < 0.6:绿色
  • 0.2 < r2 < 0.4:浅蓝色
  • 0 < r2 < 0.2:蓝色

示例数据

LD_a <- data.frame(
  number = 1:6,
  z.df1 = c(-9.029749, -8.782127, -8.457286, -8.427015, -8.563461, 4.238644),
  z.df2 = c(-5.0525025, -5.0128869, -5.1317241, -5.1587258, -4.8658377, 0.1789411),
  r2 = c(1.000, 0.987, 0.954, 0.954, 0.961, 0.015)
)

错误代码问题分析

你提供的代码存在两个关键问题:

  1. 语法错误:开头嵌套了两次ggplot(),导致无法正确生成图形。
  2. 颜色映射颠倒:你将最小的r2区间((-Inf,0.2])设为红色,但实际需求是最大区间(r2 >=0.8)用红色,区间与颜色的对应完全不符。

修正后的代码

library(ggplot2)

ggplot(LD_a, aes(x = z.df2, y = z.df1)) + 
  geom_point(aes(colour = cut(r2, breaks = c(-Inf, 0.2, 0.4, 0.6, 0.8, Inf),
                             labels = c("0 < r2 < 0.2", "0.2 < r2 < 0.4", "0.4 < r2 < 0.6", "0.6 < r2 < 0.8", "r2 >= 0.8"))),
             size = 5) +
  scale_color_manual(name = "r2区间",
                     values = c("0 < r2 < 0.2" = "blue",
                                "0.2 < r2 < 0.4" = "lightblue",
                                "0.4 < r2 < 0.6" = "green",
                                "0.6 < r2 < 0.8" = "orange",
                                "r2 >= 0.8" = "red")) +
  labs(x = "z.df2", y = "z.df1")

代码说明

  1. 移除了嵌套的ggplot()调用,修复语法错误。
  2. 使用cut()的labels参数自定义图例标签,替代默认的区间字符串,提升可读性。
  3. 严格按照需求匹配区间与颜色:
    • 最小区间0 < r2 <0.2对应蓝色
    • 0.2 < r2 <0.4对应浅蓝色
    • 0.4 < r2 <0.6对应绿色
    • 0.6 < r2 <0.8对应橙色
    • 最大区间r2 >=0.8对应红色
  4. 添加了labs()函数明确坐标轴标签,使图形更规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 22:32:47