根据条件在geom_text中为文本添加颜色

4

我正在制作一张图表,使用geom_text将p值以文本方式绘制出来。这些p值存储在文件pvaluesmir21combined中。

如果该值小于5e-02,我想要将文本(FDR)添加为红色。您有任何想法如何实现吗?

ggplot(TumorNormalmiR21_5p.m3, aes(X2,value)) + 
  geom_dotplot(aes(fill=variable),binaxis = "y") + coord_flip() +
  theme_bw(base_size=8) +
  theme(axis.text.y=element_text(hjust = 0)) +
  geom_text(aes(x, y, label=FDR, group=NULL),data=pvaluesmir21combined,size=2)


> pvaluesmir21combined

           FDR  x  y
1  p = 8.3e-02  1 13
2  p = 6.3e-05  2 13
3  p = 3.2e-17  3 13
4  p = 4.8e-22  4 13
5  p = 3.1e-10  5 13
6  p = 6.7e-11  6 13
7  p = 3.2e-24  7 13
8  p = 2.1e-06  8 13
9  p = 1.9e-02  9 13
10 p = 9.4e-06 10 13
11 p = 1.5e-03 11 13

element_text中指定颜色向量。请参阅https://dev59.com/YGIj5IYBdhLWcg3wHhz_。 - Roman Luštrik
1
类似于 geom_text(aes(x, y, label=FDR, group=NULL, colour=ifelse(as.numeric(sub("p = ", "", FDR)) < 5e-02 , "red", "black")),data=pvaluesmir21combined,size=2) - lukeA
它起作用了。不过它们变成了红色和青绿色。 - BioMan
你应该使用 scale_color_manual 或其他函数来选择颜色。 - PAC
2个回答

4
您可以尝试使用函数 scale_color_manual
ggplot(TumorNormalmiR21_5p.m3, aes(X2,value)) + 
 geom_dotplot(aes(fill=variable),binaxis = "y") + coord_flip() +
 theme_bw(base_size=8) +
 theme(axis.text.y=element_text(hjust = 0)) +
 geom_text(aes(x, y, label=FDR, group=NULL, color = ifelse(as.numeric(sub("p = ", "", FDR)) < 5e-02, 0, 1),data=pvaluesmir21combined,size=2) + 
 scale_color_manual(values = c("red", "black"))

请看这个链接:http://docs.ggplot2.org/0.9.3.1/scale_manual.html

不知道如何自动选择数据框对象的比例尺。默认为连续型。 在eval(expr, envir, enclos)中出现错误:找不到对象“x”。 - BioMan
这个可以运行:geom_text(aes(x, y, label=FDR, colour=colours),data=pvaluesmir21combined,size=2) + scale_color_manual(values=colours) + - BioMan
颜色 <- ifelse(as.numeric(sub("p = ", "", pvaluesmir21combined$FDR)) < 5.0e-02 , "红色", "黑色") - BioMan

0

我只想添加另一种替代方案,我发现在p值显著(<5.0e-02)时添加**很有用。唯一的问题是您需要注意您使用的x,y坐标。

geom_text(data = pvaluesmir21combined, aes(label = ifelse(as.numeric(sub("p = ", "", FDR)) < 5e-02, "**", " ")), color = "red" ) + 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接