ggplot 只有黑点,没有颜色

ggplot only black dots and no colors

我在 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()

这里发生了两件事:

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

或者,使用 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, ...)。)