Экспорт изображения из R в word с альфа-каналом (прозрачность)

Я хочу экспортировать R-образную фигуру в Word. Рисунок содержит прозрачность (альфа-канал). Ниже приведен пример кода - при экспорте в метафайл Windows он выдает ошибку:

предупреждение : В заговоре.xy(xy, type,...) : полупрозрачность не поддерживается на этом устройстве: сообщается только один раз на странице

экспорт в SVG дает желаемый результат, но этот формат изображения не поддерживается MS Office. Есть ли способ вокруг этого? Какой тип изображения можно использовать при сохранении Альфа-канала? PNG возможен, но это не дает очень четкой графики - он теряет четкое векторизованное изображение.

# Get some colours with transparency (alpha = 0.6)
col.dot <- rainbow(5, alpha = .6)

# Save to svg file - OK
svg("test_fig.svg")
plot(1:5,col = col.dot, pch=15)
dev.off()

# Save to wmf - warning "semi-transparency is not supported on this device..."
win.metafile("test_fig.wmf")
plot(1:5,col = col.dot, pch=15)
dev.off()

Я должен добавить, это в системе Windows (Windows 8 64 бит, с Word 2013)

2 ответов


на лучшее решение, которое я видел до сих пор чтобы сделать R графики работать вместе с Office (Word, Powerpoint) является экспорт непосредственно в Powerpoint с помощью пакета ReporteRs, а в

library( ReporteRs )
require( ggplot2 )
mydoc = pptx(  )
mydoc = addSlide( mydoc, slide.layout = "Title and Content" )
mydoc = addTitle( mydoc, "Plot examples" )
myplot = qplot(Sepal.Length, Petal.Length
               , data = iris, color = Species
               , size = Petal.Width, alpha = I(0.7)
)
mydoc = addPlot( mydoc, function( ) print( myplot ), vector.graphic=TRUE) 
writeDoc( mydoc, file = "test plot.pptx" )

enter image description here

это приводит к полностью редактируемому, высококачественному графику Powerpoint в собственном векторном формате DrawingML Office, который вы также можете легко скопировать и вставить в качестве расширенного метафайла, если хотите, и который в отличие от EMFs экспортируется из R также полностью поддерживает прозрачность.

для простого базового R-графика синтаксис будет

library( ReporteRs )
mydoc = pptx(  )
mydoc = addSlide( mydoc, slide.layout = "Title and Content" )
mydoc = addTitle( mydoc, "" )
myplot = function( ) {return(plot(c(1:100), c(1:100), pch=20))}
mydoc = addPlot( mydoc, fun=myplot, vector.graphic=TRUE, offx=0,offy=0,width=12, height=8, fontname="Calibri", pointsize=20)  
writeDoc( mydoc, file = "test plot2.pptx" )

enter image description here

поддерживаются базовые R-графики, решетчатые графики и ggplots.

EDIT: теперь я сделал небольшой пакет export С помощью вспомогательной функции graph2ppt и graph2doc экспортировать текущий активный график в PowerPoint или Word, а также table2doc, table2ppt и table2html чтобы экспортировать ранее показанный объект R stats в Word, Powerpoint или HTML таблица, например:

install.packages("rJava")
install.packages("ReporteRs")
install.packages("ReporteRsjars")
install.packages("ggplot2")
install.packages("rtable")
install.packages("xtable")
install.packages("taRifx")
install.packages("devtools")
library(devtools)
devtools::install_github('tomwenseleers/export2office',local=F)

library(export)

?graph2ppt
?table2doc

## export of ggplot2 plot
library(ggplot2)
qplot(Sepal.Length, Petal.Length, data = iris, color = Species, 
      size = Petal.Width, alpha = I(0.7))
graph2ppt(file="ggplot2 plot.pptx", aspectr=1.7)

# add 2nd slide with same graph in different aspect ratio
graph2ppt(file="ggplot2 plot.pptx", aspectr=1.3, append=T) 
# add 3d slide with same graph with fixed width & height
graph2ppt(file="ggplot2 plot.pptx", width=6, height=5, append=T) 

# export of aov Anova output
fit=aov(yield ~ block + N * P + K, npk)
summary(fit)
table2doc(file="table_aov.docx")
summary(fit)
table2doc(file="table_aov.docx",append=T,digits=4)
summary(fit)
table2doc(file="table_aov.docx",append=T,digits=4,digitspvals=1)
summary(fit)
table2html(file="table_aov.html")

если кто-то найдет какие-либо ошибки там, дайте мне знать!


С помощью win.metafile:

существует поддержка полупрозрачных цветов линий, заливок и текста на экране устройства. Они работают для сохранения (из меню "Файл") в PDF, PNG, BMP, JPEG и TIFF, но будут проигнорированы при сохранении в Метафайл и Постскриптум.

таким образом, вы не можете использовать прозрачность в метафайле. Вы можете попробовать сохранить как png и увеличить разрешение вывода.