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) )
错误代码问题分析
你提供的代码存在两个关键问题:
- 语法错误:开头嵌套了两次
ggplot(),导致无法正确生成图形。 - 颜色映射颠倒:你将最小的
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")
代码说明
- 移除了嵌套的
ggplot()调用,修复语法错误。 - 使用
cut()的labels参数自定义图例标签,替代默认的区间字符串,提升可读性。 - 严格按照需求匹配区间与颜色:
- 最小区间
0 < r2 <0.2对应蓝色 0.2 < r2 <0.4对应浅蓝色0.4 < r2 <0.6对应绿色0.6 < r2 <0.8对应橙色- 最大区间
r2 >=0.8对应红色
- 最小区间
- 添加了
labs()函数明确坐标轴标签,使图形更规范。
内容的提问来源于stack exchange,提问作者Ruth Johnson
相关产品推荐
相关产品推荐

