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

在ggplot2中叠加双散点图:实现点外框与内部差异化着色

实现散点外框按因子着色、内部按连续变量渐变填充的ggplot2方案

我来帮你搞定这个ggplot2的散点图需求!你想要的散点外框按6类因子着色、内部按连续变量渐变填充,其实不用叠加两个散点图,用支持填充的点形状就能一步实现,具体方案如下:

核心思路

关键是选择支持填充的点形状(比如shape=21,这是带外框的空心圆形,支持独立设置外框色和填充色),然后分别把color映射到你的因子变量subspecies,fill映射到连续数值变量,再分别配置对应的颜色尺度即可。

完整代码示例

library(ggplot2)

# 假设你的数据集是PCA_isotopes_2,包含PC1、PC2、subspecies(6类别因子)、continuous_var(连续数值变量)
ggplot(PCA_isotopes_2, aes(x = PC1, y = PC2)) +
  theme_classic() +
  # 使用shape=21实现外框+填充的效果,stroke控制外框粗细,size控制点的整体大小
  geom_point(aes(color = factor(subspecies), fill = continuous_var),
             shape = 21, size = 3, stroke = 1, alpha = 5/6) +
  # 手动设置6个因子类别的外框颜色,你可以替换成自己需要的颜色值
  scale_color_manual(
    breaks = levels(factor(PCA_isotopes_2$subspecies)),
    values = c("#E69F00", "#56B4E9", "#009E73", "#F0E442", "#0072B2", "#D55E00")
  ) +
  # 设置连续变量的填充渐变色,这里用viridis系渐变(美观且色盲友好),也可以自定义渐变
  scale_fill_viridis_c(option = "plasma", name = "你的连续变量名称") +
  # 可选:调整图例标题,让图表更清晰
  labs(color = "亚种", fill = "数值变量")

关键细节说明

  • 点形状选择:普通的shape=1是纯空心,没有填充属性,而shape=21-25都是支持独立设置外框(color)和填充(fill)的形状,其中shape=21是最常用的圆形。
  • 外框颜色配置:用scale_color_manual自定义6个因子类别的颜色,breaks参数确保图例顺序和因子水平一致。
  • 填充渐变配置:连续变量的填充色用scale_fill_viridis_c(色盲友好的渐变),如果你想要自定义渐变,可以换成scale_fill_gradient(low = "lightblue", high = "darkblue")这类写法。
  • 参数调整:stroke控制外框粗细,size控制点的整体大小,alpha可以调整点的透明度,避免重叠时过于拥挤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:13:20