ggplot散点图:如何按分组设置颜色、填充与形状
解决方案
问题根源是你选的形状不支持填充属性:像1(空心圆)、2(空心三角)、16(实心圆)这类形状,要么本身是固定的空心/实心,要么不接受fill参数。要实现填充效果,必须用支持填充的形状(如21-25号形状),这类形状的内部颜色由fill控制,边框颜色由color控制。
下面是调整后的完整代码,完美匹配你的需求:
ggplot(data = data_scatter, aes(x = result_org, y = result_conv)) + # 映射fill到农田距离,shape到干预依从性,color统一设为边框色(远农田靠白色填充+黑边框实现空心) geom_point(aes(fill = factor(Field), shape = factor(excl_3)), color = "black", size = 3) + # 为不同依从性分配支持填充的形状:按需调整数量,确保每个类别对应一个 scale_shape_manual(values = c(21, 24, 22, 25)) + # 设置填充色:远农田用白色(配合黑边框成空心),近农田用你需要的颜色 scale_fill_manual(values = c("Far Field" = "white", "Near Field" = "#1f77b4")) + scale_x_continuous(trans = "log", breaks = c(0, 0.1, 0.5, 1.0), limits = c(NA, 1.2)) + scale_y_continuous(trans = "log", breaks = c(0, 0.1, 0.5, 1.0), limits = c(NA, 1.2)) + guides( fill = guide_legend(title = "居住距离农田远近"), shape = guide_legend(title = "干预方案依从性") ) + labs( y = "第2周尿液草甘膦浓度(μg/L)", x = "第1周尿液草甘膦浓度(μg/L)" ) + geom_abline(slope = 1, intercept = 0) + theme_minimal()
关键细节说明
- 支持填充的形状编号:21(可填充圆)、22(可填充方)、23(可填充菱形)、24(可填充上三角)、25(可填充下三角);
- 远农田样本通过
fill="white"+color="black"实现空心效果,近农田设置目标填充色即可; - 确保
shape映射的每个类别都分配了支持填充的形状,否则fill参数不会生效。
内容的提问来源于stack exchange,提问作者Carly Barker
相关产品推荐
相关产品推荐

