我刚刚编写了我的第一个 R 脚本。我需要为组中的每个项目制作大量图表,并认为循环浏览这些项目以创建 pdf 会更快。使用几乎相同的代码,当我使用 for 循环时,我将 y 轴的信息放在图的中间(不好)。如果我一次创建一个 pdf(无循环),则图的中间不会放置任何文本(好)。有人可以解释为什么这两种方法之间的图表存在差异,以及如何摆脱循环pdf中出现的居中文本。先感谢您。
要创建单个图,我使用以下代码:
require(ggplot2)
require(reshape)
require(lattice)
header = scan('out_ordered.txt', nlines = 1, what = character())
header = header[3:length(header)]
data = read.table('out_ordered.txt', skip = 2, header = FALSE, row.names = 1)
names(data) = header
tdata = data.frame(t(data))
names(tdata)
pdf (file='Different.pdf')
plot(Bacteroidetes ~ Bacteroidetes, data = tdata, pch = 16, main = 'Bacteroidetes', xlab = 'Environment', ylab = 'Counts', axes = FALSE, las = 2)
original.parameters<-par()
par(xaxt='n')
lablist<-as.vector(c(header[1:length(header)]))
axis(1, at=1:length(header), labels = FALSE)
axis(2, at=0:63)
text(seq(1, length(header), by=1), par('usr')[3] - 0.2, labels = lablist, srt = 90, pos = 1, xpd = TRUE, offset = 2.5)
box()
dev.off()
x 轴上的标签存在一些间距问题,通常可以使用一些按钮来表达其耀斑,但它在正确的轨道上。
如果我使用循环,我使用以下代码:
#!/usr/bin/Rscript
# change the working directory in R to the place where you have the input file.
require(ggplot2)
require(reshape)
require(lattice)
header = scan('out_ordered.txt', nlines = 1, what = character())
header = header[3:length(header)]
data = read.table('out_ordered.txt', skip = 2, header = FALSE, row.names = 1)
names(data) = header
tdata = data.frame(t(data))
names(tdata)
for(i in names(tdata))
{
pdf(file = paste(i, '.pdf', sep = ''))
plot(get(i) ~ get(i), data = tdata, pch = 16, main = get(i) , xlab = 'Environment', ylab = 'Counts', axes = FALSE, las = 2)
original.parameters<-par()
par(xaxt='n')
lablist<-as.vector(c(header[1:length(header)]))
lablist
axis(1, at=1:length(header), labels = FALSE)
axis(2, at=0:65)
text(seq(1, length(header), by=1), par('usr')[3] - 0.2, labels = lablist, srt = 90, pos = 1, xpd = TRUE, offset = 2.5)
box(which = 'plot')
dev.off()
}
以下是图片:
第一个图像是在循环过程中创建的,另一个是独立的图。