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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 11:30:46