You need to enable JavaScript to run this app. 如何在ggplot2的geom_point散点图中通过点形状区分不同分组
优惠活动
大模型
产品
解决方案
定价
更多

如何在ggplot2的geom_point散点图中通过点形状区分不同分组

当然可以实现,只需要将你的分类变量TimeKD映射到geom_point的shape审美属性即可,修改方案如下:

基础自动分配形状版本

直接在geom_point的美学映射参数中新增shape = TimeKD即可,ggplot2会自动为A、B两类分配不同的默认点形状:

ggplot(df, aes(x = Gene, y = Log2FC, group=TimeKD)) + 
  geom_point(aes(color = -Adj.P.Value, size = Mean.Count, shape = TimeKD), alpha = 0.5)+
  coord_flip() +
  scale_colour_gradientn(
    colours = grDevices::colorRampPalette(c("black", "cyan", "violet"))(n = 200),
    values = NULL,
    space = "Lab",
    na.value = "grey50",
    guide = "colourbar",
    aesthetics = "colour"
  )

自定义指定形状版本

如果想要手动指定两类对应的形状,可以额外添加scale_shape_manual()配置,以下示例将A类设为实心圆形,B类设为实心三角形:

ggplot(df, aes(x = Gene, y = Log2FC, group=TimeKD)) + 
  geom_point(aes(color = -Adj.P.Value, size = Mean.Count, shape = TimeKD), alpha = 0.5)+
  coord_flip() +
  scale_colour_gradientn(
    colours = grDevices::colorRampPalette(c("black", "cyan", "violet"))(n = 200),
    values = NULL,
    space = "Lab",
    na.value = "grey50",
    guide = "colourbar",
    aesthetics = "colour"
  ) +
  # 自定义形状:16对应实心圆,17对应实心三角形,可按需替换编码
  scale_shape_manual(values = c("A" = 16, "B" = 17))

如果需要调整为其他形状,替换scale_shape_manual的values参数里的数字编码即可,常用实心形状编码包括15(实心方块)、18(实心菱形)等。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 18:45:03