用textxy()标记某些点

时间:2018-10-23 22:56:43

标签: r plot

我正在尝试使用plot函数和R中的calibrate程序包在R中绘制火山图,并试图使用textxy函数仅绘制某些点。

以下是一些数据:

Metabolites <- data.frame(Metabolite = c("Glucose", "Galactose", "Creatine", "Lactose", "N-Acetylputrescine", "Tyramine", "Adenine", "Glycine", "Erythritol", "Choline"), Neg_pvalue = c(10, 8, 2, 1, 0.5, 0.7, 5, 3, 5.8, 4), LogFC = c(4, -3, 2, -1, 0.5, 0.7, 1, -2, -4, -1), padjust = c(1.453557e-19, 5.312771e-08, 4.983176e-02, 9.585447e-01, 2.449707e-01, 3.058580e-01, 4.223173e-02, 1.002379e-03, 4.466316e-27, 1.003879e-01))

这是我的代码:

with(Metabolites, plot(LogFC, Neg_pvalue, pch=20, main="CNL", xlim=c(-5,6)))
with(subset(Metabolites, padjust <.05 ), points(LogFC, Neg_pvalue, pch=20, col="blue"))`
with(subset(Metabolites, padjust <.05 & abs(LogFC) > 2), points(LogFC, Neg_pvalue, ph=20, col="red"))

现在是问题所在:

with(subset(Metabolites, padjust <.05 & abs(LogFC) > 2), textxy(LogFC, Neg_pvalue, labs=Metabolite[1:3], cex=.5, offset = 0.2))`

如果我绘制此代码,则仅获得前3个数据点,如代码的labs=Metabolite[1:3]部分所示。或者,如果我绘制labs=Metabolite,则将得到所有标签。

如果我只想绘制Metabolites $ Metabolite中给出的甘氨酸,乳糖和赤藓醇的标签,我能做到吗?

另外,说我想保持我的前3个数据点为标签(labs=Metabolite[1:3]),但也想标记其他感兴趣的代谢物,例如酪胺和N-乙酰基酪胺酸;我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

这似乎可以通过选择集合中的项目并将这些字符值用作标签来起作用:

library(calibrate)
with(subset(Metabolites, Metabolite %in% c( 'Glycine', 'Lactose', 'Erythritol' )), 
    textxy(LogFC, Neg_pvalue, labs=c( 'Glycine', 'Lactose', 'Erythritol' ), cex=.5, offset = 0.2))