【问题标题】:coloring by a group using ggscatter in R使用 R 中的 ggscatter 按组着色
【发布时间】:2018-07-23 23:10:05
【问题描述】:

我正在使用 ggpubr 库中的 ggscatter 函数来制作散点图。 我的数据框是这样的

1   a   b   chr17   +   0.003   0.005   0,2 282232  4,0 253259  non_sig
10  a   b   chr22   -   0.733   0.6855  16,17   3,3 24,45   11,4    non_sig
12  a   b   chr13   +   0.7625  0.7965  22,14   1,7 7,18    1,4 non_sig
14  a   b   chr13   +   0.4555  0.369   20,16   19,12   4,23    17,11   non_sig
15  a   b   chr13   +   0.488   0.384   27,15   19,12   7,18    17,11   non_sig
16  a   b   chr16   -   0.9715  0.978   200141  3,2 260280  3,3 non_sig
21  a   b   chr1    +   0.9365  0.933   149118  1,12    133175  11,5    non_sig
22  a   b   chrX    +   0.6475  0.7265  129,57  58,35   104,78  37,29   non_sig
26  a   b   chr3    +   0.05    0.0475  54,32   721503  46,27   519617  non_sig
27  a   b   chr3    +   0.0475  0.045   57,34   721503  47,30   519617  non_sig

这是我正在使用的命令

library("ggpubr")
df <- read.table("test.txt",header =F,sep="\t")
ggscatter(df,x= "V6",y= "V7",color = "V12", shape = 21, size = 1,add = "reg.line",cor.coef = TRUE, cor.method = "pearson",conf.int = TRUE,title="A3SS(4561)",xlab="Ψ2",ylab = "Ψ1",
                  palette = c("black", "red"))

我想使用具有 non_sigsig 作为值的第 12 列为点着色,并以此为基础,如果 non_sig,我希望它是black,如果是sig,我希望它是red

当我使用上面的代码时,它会做我想做的事,但是我该如何在这里专门编写代码

sig=>red
non_sig=>black

感谢您的帮助!

【问题讨论】:

  • 从某种意义上说,您已经在对颜色进行编码了。第 12 列中的变量将按字母顺序排列:首先是 non_sig,然后是 sig。您的调色板是按顺序分配的,因此“黑色”属于第一个因素 (non_sig),“红色”属于第二个因素 (sig)。
  • 感谢您的回复。我现在明白它在这里可以工作,但是假设 column12 中有三个变量,我想以我知道的方式而不是基于字母顺序为它们分配颜色,我该怎么做?
  • 添加了一个希望有帮助的答案。

标签: r grouping ggpubr


【解决方案1】:

我假设 “使用 12 列为点着色”您的意思是 用基于列 V12 的颜色填充点。

请注意,您的示例数据仅包含 V12 = "non_sig" 条目,因此我手动将其中一个条目更改为 "sig"

library(ggpubr)
ggscatter(
    df,
    x= "V6", y= "V7",
    fill = "V12",
    shape = 21,
    size = 5,
    add = "reg.line",
    cor.coef = TRUE,
    cor.method = "pearson",
    conf.int = TRUE,
    title="A3SS(4561)",
    xlab="Ψ2",
    ylab = "Ψ1",
    palette = c("black", "red"))


样本数据

df <- read.table(text =
    "1   a   b   chr17   +   0.003   0.005   0,2 282232  4,0 253259  non_sig
10  a   b   chr22   -   0.733   0.6855  16,17   3,3 24,45   11,4    non_sig
12  a   b   chr13   +   0.7625  0.7965  22,14   1,7 7,18    1,4 non_sig
14  a   b   chr13   +   0.4555  0.369   20,16   19,12   4,23    17,11   non_sig
15  a   b   chr13   +   0.488   0.384   27,15   19,12   7,18    17,11   sig
16  a   b   chr16   -   0.9715  0.978   200141  3,2 260280  3,3 non_sig
21  a   b   chr1    +   0.9365  0.933   149118  1,12    133175  11,5    non_sig
22  a   b   chrX    +   0.6475  0.7265  129,57  58,35   104,78  37,29   non_sig
26  a   b   chr3    +   0.05    0.0475  54,32   721503  46,27   519617  non_sig
27  a   b   chr3    +   0.0475  0.045   57,34   721503  47,30   519617  non_sig", header = F)

更新

作为对您的评论的回应,您可以为您的palette 参数使用一个命名 向量;例如

df <- read.table(text =
    "1   a   b   chr17   +   0.003   0.005   0,2 282232  4,0 253259  non_sig
10  a   b   chr22   -   0.733   0.6855  16,17   3,3 24,45   11,4    non_sig
12  a   b   chr13   +   0.7625  0.7965  22,14   1,7 7,18    1,4 non_sig
14  a   b   chr13   +   0.4555  0.369   20,16   19,12   4,23    17,11   non_sig
15  a   b   chr13   +   0.488   0.384   27,15   19,12   7,18    17,11   sig
16  a   b   chr16   -   0.9715  0.978   200141  3,2 260280  3,3 non_sig
21  a   b   chr1    +   0.9365  0.933   149118  1,12    133175  11,5    non_sig
22  a   b   chrX    +   0.6475  0.7265  129,57  58,35   104,78  37,29   test
26  a   b   chr3    +   0.05    0.0475  54,32   721503  46,27   519617  non_sig
27  a   b   chr3    +   0.0475  0.045   57,34   721503  47,30   519617  non_sig", header = F)


ggscatter(
    df,
    x= "V6", y= "V7",
    fill = "V12",
    shape = 21,
    size = 5,
    palette = c(test = "black", sig = "red", non_sig = "orange"))

【讨论】:

  • 抱歉,我没有意识到,我这里没有 sig 值。我看到您使用了 fill 而不是 color 参数,但在这种情况下,它是按字母顺序分配的,如果我有第三个变量 test 并且我希望它是黑色和 sig 到红色和 non_sig 是橙色怎么办。我该怎么做?
  • @user3138373 您可以为palette 使用命名向量;我已经更新了我的答案,请看一下。
  • 非常感谢,我不知道我可以在 中使用名称
【解决方案2】:

假设第 12 列中的变量是因子,它们的默认排序是按字母顺序排列的。因此,在您的示例中,第一个调色板颜色(“黑色”)进入第一个因子级别(“non_sig”);第二种颜色(“red”)属于第二个因素(“sig”)。

如果您想以不同的方式分配颜色,您需要重新排序调色板中的因子级别或颜色名称。例如,要将“black”、“red”和“green”分配给因子“sig”、“non_sig”和“new_var”,您可以执行以下操作:

df$V12 <- factor(df$V12, levels = c("sig", "non_sig", "new_var"))

然后在剧情中:

palette = c("black", "red", "green")

【讨论】:

    猜你喜欢
    • 2016-09-17
    • 2023-03-19
    • 2021-09-17
    • 1970-01-01
    • 2023-03-28
    • 2022-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多