Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将绘图保存为EMF文件_R_Plot - Fatal编程技术网

R 将绘图保存为EMF文件

R 将绘图保存为EMF文件,r,plot,R,Plot,我对devEMF包中的emf()函数有问题 我正在使用的代码- library(devEMF) emf(file = "trial.emf") plot(1:10, seq(10, 100, 10), type = "l", xlab = "Time", ylab = "Distance") #sample plot dev.off() 这没有打印线,但有其他所有内容(标签、轴标记、标题) 我丢失了一些图形包吗 sessionInfo() #R version 3.3.2 (2016-10

我对
devEMF
包中的
emf()
函数有问题

我正在使用的代码-

library(devEMF)
emf(file = "trial.emf")
plot(1:10, seq(10, 100, 10), type = "l", xlab = "Time", ylab = "Distance")
#sample plot
dev.off()

这没有打印线,但有其他所有内容(标签、轴标记、标题)

我丢失了一些图形包吗

sessionInfo()
#R version 3.3.2 (2016-10-31)
#Platform: x86_64-w64-mingw32/x64 (64-bit)
#Running under: Windows 7 x64 (build 7601) Service Pack 1

#locale:
#[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United # 
#States.1252   
#[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C                      
#[5] LC_TIME=English_United States.1252    

#attached base packages:
#[1] stats     graphics  grDevices utils     datasets  methods   base     

#other attached packages:
#[1] devEMF_3.6

#loaded via a namespace (and not attached):
#[1] tools_3.3.2

如果您试图在LibreOffice之外查看,则该函数中的某些默认值并不理想

试试这个:

library(devEMF)
emf(file = "trial.emf", emfPlus = FALSE)
plot(1:10, seq(10, 100, 10), type = "l", xlab = "Time", ylab = "Distance")
dev.off()

确保
emfPlus=FALSE
。如果在LibreOffice中查看由
emfPlus=TRUE
生成的绘图,您将看到它看起来很好。与其他查看器一起使用时,请使用
emfPlus=FALSE

最有可能的是,用于查看生成的emf图形的程序不支持emf+记录

正如JMT2080AD的回答中提到的,devEMF库可以生成“EMF”或“EMF+”文件。较新的EMF+格式()自2007年开始出现,并得到了较新的封闭源代码程序(如Office 2010)的支持,但旧程序(如Adobe Illustrator的旧版本)和许多开放源代码程序(如LibreOffice、Inkscape)中的spotty缺少支持

不管是好是坏,EMF+记录嵌入在EMF注释记录中,这意味着旧的程序将默默地忽略它们

我发现devEMF默认值为Microsoft Office 2010和LibreOffice>5.1.6生成可接受的文件。虽然LibreOffice对EMF+的支持不完整,但在调用
EMF()
时,默认情况下会关闭不支持的功能。这就是说,JMT2080AD建议在调用
emf()
时设置
emfPlus=FALSE
,这可能会使更多程序可以查看文件(代价是丢失透明性和抗锯齿等功能)


(披露:我是devEMF软件包的作者)

谢谢!出于好奇,什么是
emfPlus
?您可以在帮助中了解它。在R终端中运行
?emf
,并查看详细信息部分。我以前从未听说过它,直到我刚才看到这个工具。这似乎是LibreOffice支持的一种新的更通用的EMF格式。有道理,我使用Paint来查看,因为这是查看EMF文件的“建议”应用程序。