如何在R中的同一JPEG文件中绘制多个图形?

时间:2016-04-16 04:12:36

标签: r plot

以下是我迭代进行并将其存储在不同文件中的情节代码。

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 个答案:

答案 0 :(得分:0)

您是否希望每个文件有两个页面,每个页面都有一个图表(正如评论建议并且正确地说不适用于jpeg),或者单个页面/文件中有两个图表?

鉴于您在mfrow中使用的par参数,我假设你想要后者。有几点要做到这一点:

  • par后拨打jpeg,否则每次拨打jpeg都会重置设备选项。

  • 我想你实际上想在创建设备之前定义mypath ,否则第一个文件将丢失它,其余的将被移动一个。

  • 您需要两次调用绘图,一个针对您想要的每个绘图。大概你也想要改变for循环序列以相互跳过(假设你想要连续两个连续绘制)。

尝试这样的事情:

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电话中断,但如果有必要的话,这是一个简单的解决方案。