Р: Построение графика 4х4 с помощью for -loop и png, зачем получать график 1х1 вместо 4х4? - PullRequest
0 голосов
/ 02 декабря 2011

Я могу заставить работать график 4x4, когда пробую его в командной строке, но не с помощью элементов for -loop и png в приведенном ниже коде.Я расстроен тем, что, черт возьми, проблема в том, что я пытался понять это сейчас, и не могу двигаться вперед.

Просто $ R CMD Sweave paper.Rnw, $ pdflatex paper.tex и $ evince paper.pdf после того, как скопируете приведенный ниже код в paper.Rnw -file - и вы получите график 1x1 вместо графика 4x4.Почему?

$ mkdir Pictures
$ mkdir Data
$ cd Data
$ wget https://noppa.aalto.fi/noppa/kurssi/mat-2.3128/harjoitustyot/Mat-2_3128_data_2.xls
$ cd ..
$ cat paper.Rnw

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{amsfonts}
\usepackage{amsmath}
\usepackage{graphicx}

\begin{document}

<<echo=FALSE>>=
library(gdata)
f<-read.xls('./Data/Mat-2_3128_data_2.xls')


for(i in 1:ncol(f))
{
    png(paste('./Pictures/CO',i,'.png',sep =''))
    par(mfrow=c(2,2))
    plot(pacf(na.omit(f[,i])), main=paste('Pacf', i))
    plot(acf(na.omit(f[,i])), main=paste('Acf', i))
    plot(na.omit(f[,i]), main=paste('Data', i), type='l')
}
@

\subsection{Time-serie C1}
\includegraphics{./Pictures/CO1.png}
\subsection{Time-serie C2}
\includegraphics{./Pictures/CO2.png}
\subsection{Time-serie C3}
\includegraphics{./Pictures/CO3.png}
\subsection{Time-serie C4}
\includegraphics{./Pictures/CO4.png}
\subsection{Time-serie C5}
\includegraphics{./Pictures/CO5.png}

\end{document}

1 Ответ

5 голосов
/ 02 декабря 2011

Функции acf и pacf имеют аргумент plot, который по умолчанию равен TRUE. Таким образом, утверждение заговора не требуется (в противном случае вы получите два графика для acf и два графика для pacf). Обратите внимание, я также добавил оператор dev.off().

Это должно работать:

for(i in 1:ncol(f))
{
    png(paste('./Pictures/CO',i,'.png',sep =''))
    par(mfrow=c(2,2))
    pacf(na.omit(f[,i]), main=paste('Pacf', i))
    acf(na.omit(f[,i]), main=paste('Acf', i))
    plot(na.omit(f[,i]), main=paste('Data', i), type='l')
    dev.off()
}
@
...