Drukuj do PDF w pętli for
Chcę zapętlić wykres i umieścić wynik wykresu w PDF
.
W tym celu stosuje się następujący kod:
To, co robi, to pętla 3 razy i wykreślić 3 różne wykresy z zestawu danych iris. Następnie powinien zapisać go na dysku C:/
. Pliki PDF
są tworzone, ale są uszkodzone.
for(i in 1:3){
pdf(paste("c:/", i, ".pdf", sep=""))
plot(cbind(iris[1], iris[i]))
dev.off()
}
2 answers
Aby narysować wykresy kratowe na urządzeniu, należy wydrukować obiekt wywołany wywołaniem do jednej z funkcji Grafiki kratowej. Normalnie, w interaktywnym użyciu, r automatycznie drukuje obiekty, jeśli nie są przypisane. W pętlach jednak automatyczne drukowanie nie działa, więc należy zorganizować Wydruk obiektu, Zwykle zawijając go w print()
.
Oto przykład (proszę wybaczyć moje nadużywanie notacji Formuły; -):
require(lattice)
for(i in 1:3) {
pdf(paste("plot", i, ".pdf", sep = ""))
print(xyplot(iris[,1] ~ iris[,i], data = iris))
dev.off()
}
To tworzy trzy działki na urządzeniu pdf
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-04 11:07:20
Czy nazwa pliku zawierająca "c: /" jest prawidłową nazwą pliku na Twoim systemie operacyjnym? To wygląda jak część katalogu roboczego, którą chcesz ustawić przed wywołaniem pdf
. Pojawia się błąd mówiący, że nie można otworzyć tego pliku:
Error in pdf(paste("c:/", i, ".pdf", sep = "")) :
cannot open file 'c:/1.pdf'
Jeśli upuszczę bit" c:/ " z nazwy pliku, trzy pliki PDF zostaną poprawnie wygenerowane. Ponadto, jeśli przeniesiesz dev.off()
Poza pętlę for, otrzymasz pojedynczy plik PDF z trzema stronami zamiast trzech plików PDF. Może być tym, czego chcesz...
for(i in 1:3){
pdf(paste("plot", i,".pdf",sep=""))
plot(cbind(iris[1],iris[i]))
dev.off()
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-04 10:55:45