ここであなたのRスキルが本当に必要です。数日間、このプロットに取り組んできました。私はRの初心者なので、それで説明できるかもしれません。
染色体のシーケンス カバレッジ データがあります (基本的には、すべての染色体の長さに沿った各位置の値であり、ベクトルの長さは数百万になります)。読み取りの素敵なカバレッジ プロットを作成したいと考えています。これは私がこれまでに得たものです:
問題ないように見えますが、y ラベルが欠落しているため、どの染色体かがわかります。また、x 軸の変更に問題があったため、カバレッジが終了したところで終了します。さらに、私自身のデータははるかに大きく、特にこのプロットには非常に時間がかかります。これが、この HilbertVis plotLongVector を試した理由です。動作しますが、x 軸、ラベル、y 軸をログに記録する方法、およびベクトルが同じ長さでなくてもプロット上ですべて同じ長さになる方法を理解できません。
source("http://bioconductor.org/biocLite.R")
biocLite("HilbertVis")
library(HilbertVis)
chr1 <- abs(makeRandomTestData(len=1.3e+07))
chr2 <- abs(makeRandomTestData(len=1e+07))
par(mfcol=c(8, 1), mar=c(1, 1, 1, 1), ylog=T)
# 1st way of trying with some code I found on stackoverflow
# Chr1
plotCoverage <- function(chr1, start, end) { # Defines coverage plotting function.
plot.new()
plot.window(c(start, length(chr1)), c(0, 10))
axis(1, labels=F)
axis(4)
lines(start:end, log(chr1[start:end]), type="l")
}
plotCoverage(chr1, start=1, end=length(chr1)) # Plots coverage result.
# Chr2
plotCoverage <- function(chr2, start, end) { # Defines coverage plotting function.
plot.new()
plot.window(c(start, length(chr1)), c(0, 10))
axis(1, labels=F)
axis(4)
lines(start:end, log(chr2[start:end]), type="l")
}
plotCoverage(chr2, start=1, end=length(chr2)) # Plots coverage result.
# 2nd way of trying with plotLongVector
plotLongVector(chr1, bty="n", ylab="Chr1") # ylab doesn't work
plotLongVector(chr2, bty="n")
それから、特別に関心のある遺伝子と呼ばれる別のベクトルがあります。それらは染色体ベクトルとほぼ同じ長さですが、私のデータでは、値よりも多くのゼロが含まれています。
genes_chr1 <- abs(makeRandomTestData(len=1.3e+07))
genes_chr2 <- abs(makeRandomTestData(len=1e+07))
これらの遺伝子ベクターは、染色体の下に赤い点としてプロットしたいと思います! 基本的に、ベクトルに値がある場合 (>0)、長いベクトル プロットの下に点 (または線) として表示されます。これを追加する方法がわかりません!しかし、それはかなり簡単に思えます。
私を助けてください!どうもありがとう。