2017-12-27 284 views
2

我遇到devEMF包中的emf()功能問題。將劇情保存爲EMF文件

我使用的代碼 -

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

Output

這不會有情節,但確實擁有一切(標籤,軸蜱,標題)。

Desired_Output

我失去了一些圖形包?

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 

回答

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

+0

謝謝!出於好奇,什麼是'emfPlus'? –

+0

你可以在幫助中閱讀它。在您的R終端運行'?emf'並查看詳細信息部分。我以前從來沒有聽說過它,直到我剛纔看到這個工具。它似乎是LibreOffice支持的一種新型更通用的EMF格式。 – JMT2080AD

1

最有可能用於查看生成的emf圖形的程序不支持EMF +記錄。

正如JMT2080AD的回答所暗示的,devEMF庫可以生成「EMF」或「EMF +」文件。較新的EMF +格式(https://msdn.microsoft.com/en-us/library/cc230724.aspx)自2007年以來一直存在,並且得到了最近的閉源程序(即Office 2010)的支持,但是舊程序(例如舊版本的Adobe Illustrator)缺少支持,源程序(例如LibreOffice,Inkscape)。

無論好壞,EMF +記錄都嵌入EMF評論記錄中,這意味着較舊的程序會默默地忽略它們。

我發現devEMF默認爲Microsoft Office 2010和LibreOffice> 5.1.6生成可接受的文件。儘管LibreOffice對EMF +的支持不完整,但默認情況下在emf()的調用中關閉了不受支持的功能。也就是說,JMT2080AD在emf()的調用中設置emfPlus = FALSE的建議可能會使文件更多程序可見(以損失透明度和抗鋸齒等功能爲代價)。

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

+0

有道理,我使用Paint進行查看,因爲那是查看EMF文件的「建議」應用程序。 –