首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >R for-循环图和单R图中生成的图的差异(图)

R for-循环图和单R图中生成的图的差异(图)
EN

Stack Overflow用户
提问于 2013-08-01 13:58:08
回答 2查看 511关注 0票数 0

我刚写了我的第一个R剧本。我需要为一个组中的每个项目做大量的图表,并且认为循环遍历项目创建pdfs会更快。使用几乎相同的代码,当我使用for循环时,我得到了y轴的信息,放在图的中间(坏消息)。如果我一次创建一个pdf (sans循环),没有文本放置在情节的中间(很好)。有人能解释一下为什么这两种方法在图形上有区别,以及如何消除在环pdfs中出现的居中文本。提前谢谢你。

要创建一个单独的地块,我使用下面的代码:

代码语言:javascript
运行
复制
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轴上的标签有一些间距问题,通常可以使用一些按钮来表示它的耀斑,但它在正确的轨道上。

如果使用循环,则使用以下代码:

代码语言:javascript
运行
复制
#!/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()
}

以下是图片:

第一个图像是在循环过程中创建的,另一个是作为独立的地块创建的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-02 15:33:59

在循环中有main = get(i),它获取值;这就是为什么这些数字出现在循环版本中。相反,你只想要main=i

票数 0
EN

Stack Overflow用户

发布于 2013-08-02 14:53:41

可能不是最优雅的,而且它没有回答我的问题.我删除了for-循环,在bash中创建了一个数组,并通过它循环--每次调用R脚本时,数组项都作为R脚本参数。不漂亮

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17996140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档