Экспорт изображения из 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" )
это приводит к полностью редактируемому, высококачественному графику 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" )
поддерживаются базовые 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 и увеличить разрешение вывода.