首页 > 解决方案 > 如何在ggplot中安排geom点的顺序?

问题描述

我正在尝试更改 ggplot 中点的顺序,到目前为止,我有以下代码,

up   <- top.table$adj.P.Val < 0.05 & top.table$logFC > 1
down <- top.table$adj.P.Val < 0.05 & top.table$logFC < -1
non  <- !(up | down)

df_up   <- data.frame(x=aveLogCPM[up]  , y=top.table$logFC[up])
df_down <- data.frame(x=aveLogCPM[down], y=top.table$logFC[down])
df_non  <- data.frame(x=aveLogCPM[non] , y=top.table$logFC[non])

ggplot() +
    geom_point(data = df_up  , aes(x=x, y=y), color = "red") +
    geom_point(data = df_down, aes(x=x, y=y), color = "blue") + 
    geom_point(data = df_non , aes(x=x, y=y), color = "black")

这导致

我得到了什么

但是,我想要这样的东西:

我想要的是

标签: rggplot2

解决方案


澄清@Igor F.的回答:

ggplot() +
    geom_point(data = df_non , aes(x=x, y=y), color = "black") +
    geom_point(data = df_up  , aes(x=x, y=y), color = "red") +
    geom_point(data = df_down, aes(x=x, y=y), color = "blue") 

您还可以像在您想要的图像中所做的那样,减小黑点的大小并增加红/蓝点的大小,并结合上述分层(您将使用实际size值进行调整以使其正确) :

ggplot() +
    geom_point(data = df_non , aes(x=x, y=y), color = "black", size = 1) +
    geom_point(data = df_up  , aes(x=x, y=y), color = "red", size = 3) +
    geom_point(data = df_down, aes(x=x, y=y), color = "blue", size = 3) 

推荐阅读