我想创建一个this data的图,x轴增量为500000,y轴上sampleIDs
。以下代码可用于创建图,但是y轴标签不起作用,并且我不确定如何对x轴刻度进行编码。另外,我必须手动将标题添加到数据文件(然后在分配header = TRUE
时显然添加d
)才能使代码正常工作。自从我使用setNames以来,就应该不必将列标题放在其中吗?
d = read.delim("n_reads_per_sample.tsv", header = TRUE, sep = "\t")
xticks <- ( ? increments of 500000 to xmax ? )
dotchart(
sort(setNames(d$n_reads, d$X.sample)),
xlim = c(0, at = xticks, 1 max(d$n_reads)),
labels = dimnames(d[[1]])
,
main = "reads per sample",
xlab = "number of reads",
ylab = "sample"
)
如果链接不起作用,则文件外观如下。
x.sample n_reads
LT-145 3193621
LT-323 786578
LT-458 485543
LT-500 3689123
LT-95 3308764
LT-367 765972
LT-205 2090226
LT-245 10238727
答案 0 :(得分:1)
我现在无法获得您的全部数据,所以我只是在问题中使用您的样本。
不确定您的意思是y轴标签不起作用。他们在我看来还可以。通过抑制dotchart
产生的x轴,然后使用axis
函数制作自己的轴,可以获得所需的x轴标签。这需要使用par
做一些花哨的步法。另外,除非您拉开图形窗口,否则将没有足够的空间来打印所有轴标签。我减小了字体大小,并拉长了窗口,以得到下面的图。
UpperLimit <- ceiling(max(d$n_reads)/500000)*500000
xticks <- seq(0,UpperLimit, 500000)
par(xaxt = "n")
dotchart(
sort(setNames(d$n_reads, d$X.sample)),
xlim=c(0, UpperLimit),
labels = dimnames(d[[1]]),
main = "reads per sample",
xlab = "number of reads",
ylab = "sample"
)
par(xaxt = "s")
axis(1, at=xticks, cex.axis=0.7)