2011-05-04 23 views
11

Bir çizim üzerinde döngü yapmak ve arsa sonucunu PDF içine koymak istiyorum.Yazdırmak için PDF'ye bir döngü içinde

Aşağıdaki kod bunu yapmak için kullanılır: bunlar ne

iris veri setinden döngü 3 kez ve arsa 3 farklı araziler olduğunu. Ardından, C:/ sürücüsüne kaydetmelidir. PDF dosyaları oluşturuldu, ancak bozuk.

for(i in 1:3){ 
    pdf(paste("c:/", i, ".pdf", sep="")) 
    plot(cbind(iris[1], iris[i])) 
    dev.off() 
} 
+2

Bu, Linux'ta benim için çalışır. (Her neyse, bu sistemde uygun bir yol kullanırken). Yaptığınız örnek gerçekten mi yoksa farklı bir çizim sistemi mi kullanıyorsunuz? Kafes veya ggplot2 şansı? Eğer öyleyse, otomatik yazdırma yazdırma döngülerinde kapandığı için yazdırma() 'nda çizim çağrılarını sarmanız gerekir ve bir şey çizmeleri için kafes veya ggplot nesneleri yazdırmanız gerekir. –

+0

evet, kafes içerisindeler, ama bu da çalışmıyor ... –

+0

Herhangi bir hata? Demek istediğim, @Chase onun cevabından bahsederken, sisteminizde geçerli olan yol mu? Yazma izinleri varsa, sadece çalışma dizinine kaydetmeye ne dersiniz, o zaman sadece @Chase ile gösterilen yolu bırakın. –

cevap

36

olabilir de olmayabilir de, bir kafes grafik işlevlerden birini çağrısı ile üretilen nesneyi yazdırmak gerekiyor. Normal olarak, etkileşimli kullanımda, R otomatik, atanmamışsa nesneleri yazdırır. Döngülerde, otomatik yazdırma çalışmaz, bu nedenle, genellikle print() içine sarılarak, nesnenin yazdırılması için ayarlanması gerekir.

require(lattice) 
for(i in 1:3) { 
    pdf(paste("plot", i, ".pdf", sep = "")) 
    print(xyplot(iris[,1] ~ iris[,i], data = iris)) 
    dev.off() 
} 

Bu pdf cihazda üç araziler üretir: Burada

(Formül notasyonu ;-) benim kötüye lütfen bağışlayın bir örnektir.

+2

Bu, http: // cran özel bir durumudur.r-project.org/doc/FAQ/R-FAQ.html#Why-do-lattice_002ftrellis-graphics-not-work_003f (orijinal posterin bize gerçek kodun ne olduğunu gösteremediğinden anlaması biraz daha zordu. koşmaya çalışmak) –

2

İşletim sisteminizde "c: /" geçerli bir dosya adı içeren bir dosya adı var mı? Bu, pdf'u aramadan önce ayarlamak istediğiniz çalışma dizininin bir parçası gibi görünüyor.

Error in pdf(paste("c:/", i, ".pdf", sep = "")) : 
    cannot open file 'c:/1.pdf' 

Ben düşerse: Ben bir hata o dosyayı açamaz bana olsun "c: /" dosya isminden biraz üç PDF'leri düzgün oluşturulur. Ayrıca, döngü için dev.off()'u taşırsanız, üç PDF yerine üç sayfa içeren tek bir PDF alırsınız. veya cihazda ... Ne istediğinizi çizilmiş kafes araziler için

for(i in 1:3){ 
    pdf(paste("plot", i,".pdf",sep="")) 
    plot(cbind(iris[1],iris[i])) 
    dev.off() 
} 
+0

kapatmak için benim çalışma dizini ayarlayabilirim? –

+1

'setwd()', örneğin: 'setwd (" d: /my.dir ")'. –

+1

@Sir Ksilem - geçerli çalışma dizininin nerede olduğunu öğrenmek için, 'getwd()' komutunu kullanın. Farklı bir dizine gitmek için 'setwd ('c:/yol/to/new/dizin')' komutunu kullanın. Setwd() 'nin hem mutlak hem de göreceli dizinlerle çalışabileceğine inanıyorum, ama bu muhtemelen işletim sistemine bağımlı. Yardım sayfalarında daha fazla ayrıntı bulunmalıdır. – Chase

İlgili konular