1

我遇到了以下问题,如果有人能给我一些意见,我将不胜感激。

我想将多个数字导出到一个 jpeg 文件。我首先创建一个图形点阵,然后导出。我的主要问题是它适用于pdf而不是jpeg。有任何想法吗?

谢谢

#set the windows of the frames
par(mfcol=c(3,2))

#create the jpeg file
jpeg(filename=names(a1),".jpg",sep=""),
     quality=100,
     width=1024,
     height=768)

#plot 1
plot(a1,b1)
#plot 2
plot(a1,b2)
#plot 3
plot(a1,b3)

#plot 4
plot(a2, c1)
#plot 5
plot(a2, c2)
#plot 6
plot(a2, c3)

#dev.off shuts down the specified (by default the current) graphical device
#here it passes the picture to the file
dev.off()
4

2 回答 2

1

目前尚不清楚您是否想要在单个 jpeg 文件中包含多个 1024x768 图像 - 这没有意义 - 是否需要包含 6 个图的单个 jpeg 图像。

正如我所说,JPEG 不是多页格式,不像 PDF。因此,您可以让 R 导出到多个 JPEG 文件,但不能在一个 JPEG 中包含所有单独的数字。

R 的设备允许在文件名中使用通配符,因此如果要将六个图导出到文件foo001.jpeg, foo002.jpegfoo00x.jpeg则可以使用以下命令

jpeg(filename = "foo%03d.jpeg", ....)
.... # plotting commands here
dev.off()

如果您在没有通配符/占位符的情况下执行多个绘图会发生什么情况是say中的文档?jpeg

If you plot more than one page on one of these devices and do not
include something like ‘%d’ for the sequence number in ‘file’, the
file will contain the last page plotted.

处理多个页面的设备,因为基础文件格式允许它可以将多个绘图放入单个文件中,因为这是有意义的,例如pdf()postscript(). 这些设备具有onefile可用于指示是否需要单个文件中的多个绘图的参数。

但是,这par(mfcol=c(3,2))让我觉得您想要在同一设备区域中设置一组 3x2 的图。这是允许的,但您需要在打开设备par() jpeg()调用,而不是之前。如图所示,您的代码所做的是将活动设备拆分为 3x2 绘图区域,然后打开一个新设备,该设备采用默认参数,而不是您在调用之前在活动设备上设置的参数jpeg()。如下图所示:

> plot(1:10)
> dev.cur()
X11cairo 
       2 
> op <- par(mfrow = c(3,2))
> jpeg("~/foo.jpg")
> par("mfrow")
[1] 1 1
> dev.off()
X11cairo 
       2 
> par("mfrow")
[1] 3 2

因此,您可能想要类似的东西:

jpeg(filename=names(a1),".jpg",sep=""), quality=100,
     width=1024, height=768)
op <- par(mfcol=c(3,2))
#plot 1
plot(a1,b1)
#plot 2
plot(a1,b2)
#plot 3
plot(a1,b3)
#plot 4
plot(a2, c1)
#plot 5
plot(a2, c2)
#plot 6
plot(a2, c3)
par(op)
dev.off()

?

于 2013-06-24T15:16:19.480 回答
0

更正后的代码

#data
a1<-seq(1,20,by=1) 
b1<-seq(31,50,by=1)
b2<-seq(51,70,by=1)
b3<-seq(71,90,by=1)

#create the jpeg file
jpeg(filename="a.jpg",
     quality=100,
     width=1024,
     height=768)

#set the create the frames
par(mfcol=c(3,1))

#plot the graphs
plot(a1,b1)
plot(a1,b2)
plot(a1,b3)


#par(op)

#dev.off shuts down the specified (by default the current) graphical device
#here it passes the picture to the file
dev.off()
于 2013-06-24T15:38:53.523 回答