2016-04-16 2 views
0

Вот код для сюжета, который я делаю итеративно, и сохраняю его в разных файлах.Как я могу построить более одного рисунка в том же файле JPEG в R?

lab=unique(train_train$PdDistrict) 
lab=as.character(lab) 
par(mfrow=c(1,2),mar=c(9,4,1,0)) 
for(i in 1:length(lab)) 
{ 
    jpeg(file=mypath,quality=100,width=1024,height=768) 
    mypath=file.path("C:","Users","sujit_000","Desktop",paste("PDdistrict",i,".jpeg",sep="")) 
    a=plot(table(train_train[train_train$PdDistrict==lab[i],1]),las=2,main=lab[i]) 
    dev.off() 
} 

файлы JPEG я получаю с этим 1 изображение в файл, как показано на рисунке, но я хочу, чтобы сохранить два изображения для каждого файла.

enter image description here

+1

Используйте функцию 'layout'. Я не думаю, что формат jpeg имеет многостраничный вариант. Для этого вам понадобится PDF или PS. –

+0

, если «pdf» будет в порядке, вы можете поместить 'pdf (« myplot.pdf »)' перед вашим скриптом и 'dev.off()' внизу. но @ 42 прав, он не будет работать с 'jpeg()'. –

ответ

0

Вы хотите две страницы для каждого файла, каждый с сюжетом (как комментарии предполагают, и правильно говорить не будет работать с JPEG), или двух участков в одной странице/файл?

Учитывая аргумент mfrow, который вы использовали в par, я предполагаю, что вы хотите последнего. Пару моментов для достижения этой цели:

  • Вызов par после jpeg, в противном случае каждый вызов jpeg сбрасывает параметры устройства.

  • Я полагаю, вы на самом деле хотите, чтобы определить mypathперед тем создание устройства, в противном случае она будет отсутствовать для первого файла, а остальные будут сдвинуты на один.

  • Вам нужно иметь два вызова сюжета, по одному для каждого из участков, которые вы хотите вместе. Предположительно, вы также захотите изменить последовательность for-loop, чтобы пропустить все остальные (предполагая, что вы хотите, чтобы два последовательных графика отображались вместе).

Попробуйте что-то вроде этого:

lab=unique(train_train$PdDistrict) 
lab=as.character(lab) 
## changed loop to every other 
for(i in seq(1, length(lab), by=2)) 
{ 
    ## moved mypath before jpeg(), should mypath inclue both i and i+1 in name? 
    mypath=file.path("C:","Users","sujit_000","Desktop",paste("PDdistrict",i,".jpeg",sep="")) 
    jpeg(file=mypath,quality=100,width=1024,height=768) 
    ## moved par() from outside of loop 
    par(mfrow=c(1,2),mar=c(9,4,1,0)) 
    ## removed unnecessary assignment of plot() 
    plot(table(train_train[train_train$PdDistrict==lab[i],1]),las=2,main=lab[i]) 
    ## added second plot for i+1 
    plot(table(train_train[train_train$PdDistrict==lab[i+1],1]),las=2,main=lab[i+1]) 
    dev.off() 
} 

Это сломается на последнем i+1 вызова, если у вас есть нечетное число участков, но это просто исправить, если это необходимо.

Смежные вопросы