1

我在 R 中有一个这样的数据框(此处仅发布示例):

              DE      logFC     pval log2fc_color  rank
1    Upregulated  3.4958900 264.1088      #00519e   110
2    Upregulated  2.9649858 254.4343      #00519e   222
3    Upregulated  1.5794640 246.1799      #00519e   988
4    Upregulated  1.6678800 235.9541      #00519e   901
5    Upregulated  3.9374453 229.3586      #00519e    62
6          Top10  6.2492052 227.5845      #d51030     4
7          Top10  7.4608894 153.1061      #d51030     1
8          Top10  6.4259618 135.0821      #d51030     3
9          Top10  5.9704932 118.9760      #d51030     7
10         Top10  6.0201382 112.0736      #d51030     6
11 Downregulated -2.6035129 311.1072      #00519e  2624
12 Downregulated -3.8199728 306.3362      #00519e  3023
13 Downregulated -2.8384308 299.8498      #00519e  2749
14 Downregulated -2.9654265 299.6843      #00519e  2804
15 Downregulated -5.4785903 297.3173      #00519e  3135
16            NA -0.8830659 189.6105      #a7a7a7 17041
17            NA  0.9867408 181.4278      #a7a7a7    30
18            NA -0.9681908 170.5315      #a7a7a7 17357
19            NA  0.8636595 166.6765      #a7a7a7   451
20            NA  0.9811910 165.4120      #a7a7a7    44

我正在尝试做一个火山图。我想按不同类别的 DE 着色,并且我还在 log2fc_color 列中定义了颜色。但是,当我尝试使用以下命令进行绘图时,我只会得到黑点。

ggplot(df.t1, aes(x=logFC, y=pval, fill=log2fc_color)) + geom_point()

或者

ggplot(df.t1, aes(x=logFC, y=pval, fill=DE)) + geom_point()

在此处输入图像描述

4

1 回答 1

2

这里发生了两件事:

  1. geom_point可以使用fill=,但对于大多数shapes来说没有视觉效果;为此,您需要转换为 usingcolour=或转换为shape=使用 fill 属性的 a(例如shape=21);
  2. 根据#rrggbb您的性质log2fc_color,我相信您想要列中的文字颜色,而不是基于字符串分类值的颜色因子;将其包裹起来I(.)以强制颜色本身。
ggplot(df.t1, aes(x=logFC, y=pval, color=I(log2fc_color))) +
  geom_point()

带有文字颜色分配的ggplot2

或者,使用colour=DE和手动颜色,添加一个图例:

ggplot(df.t1, aes(x=logFC, y=pval, color=DE)) +
  geom_point() +
  scale_colour_manual(
    values = c(Upregulated = "#00519e", Top10 = "#d51030", Downregulated = "#00519e"),
    na.value = "#a7a7a7"
  )

scale_colour_manual(guide = FALSE, ...)在这种情况下,如果您想抑制图例,请使用。)

带有色标和图例的ggplot2

于 2021-10-28T11:34:21.770 回答