Я пытаюсь использовать функцию textxy
в пакете R calibrate
для построения определенных строк в моем графике вулкана, однако textxy
не отображает строки там, где они должны быть.Я искал ответ на этот вопрос, но мне не удалось найти его с этой конкретной проблемой.Мои извинения, если я как-то пропустил это.
Я сделал свой график вулкана со следующим кодом:
library(calibrate)
library(ggrepel)
-tops - это вектор строк, которые я хочу нанести на свой график вулкана
tops <- c("Taurine (-)", "Trigonelline (+)", "L-Asparagine (+)", "L-4-Hydroxyphenylglycine (+)", "2-alpha-D-Glucosyl-D-glucose (-)", "N-Acetylleucine (-)")
-Мой ДФ выглядит примерно так (крошечный подвыбор моего реального ДФ:
Spaven_toplot <- data.frame(KEGG_Match = c("Taurine (-)", "Trigonelline (+)", "L-Asparagine (+)", "L-Cysteine (+)", "L-4-Hydroxyphenylglycine (+)", "2-alpha-D-Glucosyl-D-glucose (-)", "N-Acetylleucine (-)", "L-Cystathionine (+)"),
Log2FC = c(2.511989, 3.047950, 2.680447, 2.699307, -2.390108, -2.874444, -3.477837, 4.273847),
NegLog_pvalue = c(31.69, 30.81, 27.13, 25.73, 25.43, 25.05, 25.05, 24.56),
p.adjust = c(2.035332e-32, 1.539749e-31, 7.417270e-28, 1.853295e-26, 3.673266e-26, 8.816965e-26, 8.816965e-26, 2.762265e-25))
-Создание сюжета вулкана
with(Spaven_toplot, plot(Log2FC, NegLog_pvalue, pch=20, xlim=c(-4,5)))
-Добавление цветов на основе значения
with(subset(Spaven_toplot, p.adjust <.05 ), points(Log2FC, NegLog_pvalue, pch=20, col="blue")) #If p < 0.05 = Blue
with(subset(Spaven_toplot, p.adjust <.05 & abs(Log2FC) > 2), points(Log2FC, NegLog_pvalue, pch=20, col="red")) #If p < 0.05 & abs(Log2FC) > 2 = Red
-Поставление строк с вершин на моем участке вулкана
with(subset(Spaven_toplot, KEGG_Match %in% tops),
textxy(Log2FC, NegLog_pvalue, labs = tops, cex=.5, offset = 0.2))
Это дает хороший участок вулкана, однако текст на графике неверен.
Я хочу построить определенные строки на графике вулкана. Я указал на векторе вершин выше, какие строки строить из Spaven_toplot.
Используя Spaven_toplot (выше), он указывает значения дляэти строки.
Например, "Taurine (-)" имеет Log2FC = 2.511989 и NegLog_pvalue = 31.69. Он должен быть нанесен справа от нуля, на самой высокой красной точке.
Кроме того, «L-Asparagine (+)» имеет Log2FC = 2.680447 и NegLog_pvalue= 27,13.Это также должно быть нанесено на правой стороне нуля.
«N-ацетиллейцин (-)» имеет Log2FC = -3,477837 и NegLog_pvalue = 25,05.Это должно быть нанесено на левую сторону нуля.
"L-4-Гидроксифенилглицин (+)" имеет Log2FC = -2.390108 и NegLog_pvalue = 25.43 и должен быть нанесен на левую сторону нуля.
Кроме того, если я использую этот код - он отображает все точки на графике без проблемы.
textxy(Spaven_toplot$Log2FC, Spaven_toplot$NegLog_pvalue, labs = Spaven_toplot$KEGG_Match, cex = 0.8, offset = 0.2, col = "black")
Мне интересно, что я делаю не так.Каким-то образом использование subset
с textxy
дает мне ложные результаты.Любая помощь в исправлении этого будет принята с благодарностью.Спасибо.