如何通过点类型区分 geom_point 图中的组

How to differentiate groups in a geom_point plot via point types

我有一个数据框,它有两种不同的样本类型(A 和 B)。我想通过使用不同的 shape 选项来区分它们。这是一个数据框,我目前正在尝试执行此操作。

dput(head(df)) 的输出

structure(list(Mean.Count = c(30404.8407153174, 15689.4221807262, 30404.8407153174, 15689.4221807262), 
              Log2FC = c(-0.00357013689574257, -0.00417251481039714, 0.306809506669248, 0.224653107007472), 
               Adj.P.Value = c(0.988865360408676, 0.981816989495127, 0.00202882891738576, 
 2.72576774009609e-05), 
                TimeKD = c("A", "A", "B", "B"), 
                Gene = c("HSPA5","MYH9", "HSPA5", "MYH9")), 
                row.names = c("HSPA5", "MYH9", "HSPA51", "MYH91"),
                 class = "data.frame")

当前尝试

ggplot(df, aes(x = Gene, y = Log2FC, group=TimeKD)) + 
  geom_point(aes(color = -Adj.P.Value, size = Mean.Count), 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"
  )

目前A样本和B样本都是圆形。我可以使用 ggplot2 将其中一个变成另一种形状吗?

如有任何帮助,我们将不胜感激。

您可以像这样将 shape = TimeKD 添加到 geom_point 调用的 aes 中...

ggplot(df, aes(x = Gene, y = Log2FC, group=TimeKD)) + 
  geom_point(aes(color = -Adj.P.Value, 
                 size = Mean.Count, 
                 shape = TimeKD), # <-- Right here! 
             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"
  )

看起来像这样...