我刚刚编写了我的第一个R脚本。我需要为一个组中的每个项目制作大量图表,并认为通过循环这些项目来创建PDF会更快。使用几乎相同的代码,当我使用for循环时,我将y轴的信息放置在图的中间(坏)。如果我一次创建一个pdf(无循环),则不会在文本中间放置文本(良好)。有人能解释为什么这两种方法之间的图表有所不同,以及如何摆脱循环pdf中出现的居中文本。先谢谢你。在R for for循环和单R图中创建的图形的差异(图表)
要创建一个单一的情节,我用下面的代码:
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()
}
这里是图像:
第一图像是在循环过程中产生的一个,另一个作为独立的情节。
你是否真的在代码中的任何地方使用ggplot2,reshape或lattice? – Thomas