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()
这里发生了两件事:
geom_point
可以用fill=
,但对大多数shape
来说没有视觉效果;为此,您需要转为使用 colour=
或转为使用 fill 属性的 shape=
(例如,shape=21
);
- 根据您
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, ...)
。)
我在 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()
这里发生了两件事:
geom_point
可以用fill=
,但对大多数shape
来说没有视觉效果;为此,您需要转为使用colour=
或转为使用 fill 属性的shape=
(例如,shape=21
);- 根据您
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, ...)
。)