将htmlwidget从R添加到PowerPoint幻灯片

将htmlwidget从R添加到PowerPoint幻灯片,r,powerpoint,graphviz,reporters,diagrammer,R,Powerpoint,Graphviz,Reporters,Diagrammer,如何将DiagrammeR::grViz()的htmlwidget图表输出添加到PowerPoint幻灯片?我更喜欢保持矢量图形,尽量减少手动触摸 下面main.R中的代码将点图很好地呈现为htmlwidget # ./code/digraph-test.dot digraph my_plot_name { A->B->C; } # main.R library(DiagrammeR) digraph_test <- grViz("./code/digraph-test.d

如何将DiagrammeR::grViz()的htmlwidget图表输出添加到PowerPoint幻灯片?我更喜欢保持矢量图形,尽量减少手动触摸

下面
main.R
中的代码将点图很好地呈现为
htmlwidget

# ./code/digraph-test.dot 
digraph my_plot_name {
A->B->C;
}

# main.R
library(DiagrammeR)
digraph_test <- grViz("./code/digraph-test.dot")
它会产生以下错误:

Error in .jcall(slide, "I", "add", dml.object) : 
  javax.xml.bind.UnmarshalException
 - with linked exception:
[org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 2; The markup in the document preceding the root element must be well-formed.]

似乎有些人在这方面取得了成功。我遇到了ActiveX问题,只找到了黑客解决方案,并选择不继续。必须有一个简单的解决方案,对吗

正如@alistaire所建议的那样,Rmarkdown将是这个图形的更好的解决方案,但是如果您在PowerPoint中需要它,我建议使用package webshot将其作为png文件

library(DiagrammeR)
library( ReporteRs )

mydoc = pptx()
mydoc = addSlide( mydoc, slide.layout = "Title and Content" )
mydoc = addTitle( mydoc, "Plot examples" )

# compute new size for image to fit in ppt shape ----
shape_dim <- dim(mydoc)$size
shape_height <- setNames( shape_dim["height"], NULL ) * 72 
shape_width <- setNames( shape_dim["width"], NULL ) * 72

# reuse the shape dimensions in grViz call ----
digraph_test <- grViz("digraph-test.dot", width = shape_width, height = shape_height )
htmlwidgets::saveWidget(widget = digraph_test, file = "digraph.html", selfcontained = TRUE)
webshot::webshot(url = "digraph.html", selector = '.html-widget-static-bound', file= "digraph.png")


mydoc = addImage( mydoc, filename = "digraph.png" )
writeDoc( mydoc, file = "test plot.pptx" )
库(图解程序)
图书馆(记者)
mydoc=pptx()
mydoc=addSlide(mydoc,slide.layout=“标题和内容”)
mydoc=addTitle(mydoc,“绘图示例”)
#计算图像的新大小以适合ppt形状----

shape_dim正如@alistaire所建议的,Rmarkdown将是此图形的更好解决方案,但如果您在PowerPoint中需要它,我建议使用webshot包将其作为png文件

library(DiagrammeR)
library( ReporteRs )

mydoc = pptx()
mydoc = addSlide( mydoc, slide.layout = "Title and Content" )
mydoc = addTitle( mydoc, "Plot examples" )

# compute new size for image to fit in ppt shape ----
shape_dim <- dim(mydoc)$size
shape_height <- setNames( shape_dim["height"], NULL ) * 72 
shape_width <- setNames( shape_dim["width"], NULL ) * 72

# reuse the shape dimensions in grViz call ----
digraph_test <- grViz("digraph-test.dot", width = shape_width, height = shape_height )
htmlwidgets::saveWidget(widget = digraph_test, file = "digraph.html", selfcontained = TRUE)
webshot::webshot(url = "digraph.html", selector = '.html-widget-static-bound', file= "digraph.png")


mydoc = addImage( mydoc, filename = "digraph.png" )
writeDoc( mydoc, file = "test plot.pptx" )
库(图解程序)
图书馆(记者)
mydoc=pptx()
mydoc=addSlide(mydoc,slide.layout=“标题和内容”)
mydoc=addTitle(mydoc,“绘图示例”)
#计算图像的新大小以适合ppt形状----

为什么不用呢?@alistaire我希望我能。不幸的是,我需要将PowerPoint幻灯片添加到更长的PowerPoint演示文稿中。为什么不使用?@alistaire我希望可以。不幸的是,我需要将PowerPoint幻灯片添加到更长的PowerPoint演示文稿中。大卫,你为什么选择500x300?我尝试调整您的代码,使图表填充完整的PowerPoint幻灯片(使用自定义的完整页面内容幻灯片布局模板)。我发现960x540完美地填满了那张幻灯片。但最终的图表偏离了中心。你知道怎么回事吗?我已经更新了这个例子,这样它可以根据ppt形状的大小进行调整-我认为最好控制大小这对我来说非常合适(我修改了你的代码以填充完整的PowerPoint幻灯片)。物品完全居中。超级有用!谢谢你,大卫。我知道这可能对我很无知,但是。。。!如果我想用你精彩的
ggiraph
创建一个带有弹出窗口的交互式ggplot,有没有办法在保持互动性的同时将这种互动性引入PowerPoint?(我试过上面的方法,但没有弹出窗口。)再次,如果这是无知的道歉,真诚地感谢ggiraph。顺便说一句,如果你想让我把这作为一个单独的问题补充,请说soDavid,你为什么选择500x300?我尝试调整您的代码,使图表填充完整的PowerPoint幻灯片(使用自定义的完整页面内容幻灯片布局模板)。我发现960x540完美地填满了那张幻灯片。但最终的图表偏离了中心。你知道怎么回事吗?我已经更新了这个例子,这样它可以根据ppt形状的大小进行调整-我认为最好控制大小这对我来说非常合适(我修改了你的代码以填充完整的PowerPoint幻灯片)。物品完全居中。超级有用!谢谢你,大卫。我知道这可能对我很无知,但是。。。!如果我想用你精彩的
ggiraph
创建一个带有弹出窗口的交互式ggplot,有没有办法在保持互动性的同时将这种互动性引入PowerPoint?(我试过上面的内容,但没有弹出窗口。)再次,如果这是无知的道歉,真诚地感谢ggiraph。顺便说一句,如果你想让我把这作为一个单独的问题补充,请说出来