制作幻灯片是数据分析师的必备技能之一,优秀的slides对外可以忽悠住客户,对内可以震慑住领导。精良的slides要秀外慧中,有逻辑有内容,还要有外形有风格。达到这种标准并不容易。在过去,你可能使用office中的ppt来做传统意义的幻灯片,将图片和代码费力的copy到一张张的slides上去,然后到处找模板。但这种方式已经凹特了。
在HTML5的发展背景下,已经出现了大批以网页形式的slides框架,例如:Google IO 2012\HTML5 slides\HTML5 Rocks\Shower\Deck.js这个名单可以很长。而这里只是其中六种演示框架的介绍。在这些slides框架下,你只需要懂一点点web知识,将图片和数据嵌入到一个html模板中,就可以生成一个动态可交互的slides。
实际上对于统计分析的slides,有一种工具可以使我们的制作效率更高。这就是谢益辉的knitr包。knitr像一把钥匙,打开了可重复统计报告的大门,同时也打开了通向html的大门。可以使R代码、运算结果和分析文字自然的融为一体,能自由的输出为LaTex、Markdown或者是Html。在借助knitr打通了这些奇经八脉之后,可以惊奇的发现,knitr可以将以上所有东西粘在一起,有助于实现可重复的统计分析幻灯片。
以后的工作流应该是这样的:数据分析的过程和结果均存放在rmd文件中,可根据不同需要转换为pdf或是html,当需要制作slides的时候,只要将生成的html进行一点加工,加入一些js/css效果即可生成美观炫目的slides。目前已经有很多这类现成的例子,例如coursera的公开课data analysis就是使用了这种slides来讲解R和数据分析。作者利用的是名为slidify的R包,直接从rmd文档生成html5的slides页面,非常推荐各位去下载来研究一下。
slidify使用的默认框架是io2012,比较淡雅朴素,另一种比较炫目的框架是reveal.js,这里有一个例子值得参考下。这份slides的原码可以在此找到。这份slides是使用reports包来生成的,基本流程如下:
install.packages("reports")安装reports包后使用presentation建立一个目录,这个目录会在当前R工具目录下自动生成,之后用户在目录下的rmd文件中编辑内容,保存后生成html文件,最后使用reveal.js函数生成slides,你会在reveal.js目录下找到index.html,就是最终的文件。由于reports包的瑕疵问题,在reveal.js前一步你可能需要手动切换一下工作目录。而且最好是再手动编辑一下index.html文件,以完全自定义实现reveal.js的各种特效。笔者也做了一个简单的slides可以看一看。关于reveal.js的完整资料看这里。
library(reports)
presentation('example')
setwd('~/example')
reveal.js()
相比reports包,slidify要显得稳定些,使用方法也类似,但它还放在github上,所以要用devtools包来下载它:
install_github("slidify", "ramnathv")加载slidify后使用author,它会自动在当前工作目录下建立example目录,并打开index.Rmd文档,供用户编辑,当然在写slides的时候需要遵从一定的格式才会让它识别。写完之后使用slidify即可生成网页。目前slidify支持的框架不多,但在开发版本中已经支持了包括reveal.js在内的很多框架了,所以尽请期待吧。
install_github("slidifyLibraries", "ramnathv")
library(slidify)
author('example')
slidify('index.Rmd')
打开就花了我半天时间,结果发现自己目录设置错了
回复删除这个包是在R 3.0才能装的吗……
回复删除http://timelyportfolio.github.io/rCharts_512paths/
回复删除看到一个很棒的应用!~
好多资料,多谢~
回复删除如果想要使用reveal.js(), 一定要装pandoc吗?
回复删除不用装,不过最好在linux下用
删除谢谢, 但是为什么R总是问pandoc安装路径?
删除哦,我机器上有pandoc,所以没问我。安装pandoc也很简单的。
删除我用总是出错reports包 我还是用slidify包吧
回复删除"由于reports包的瑕疵问题,在reveal.js前一步你可能需要手动切换一下工作目录。"
回复删除具体怎么切换?
"而且最好是再手动编辑一下index.html文件,以完全自定义实现reveal.js的各种特效"
如何手动?
我在目录下用knit HTML生成了html文件,然后 reveal.js(),但是rstudio下提示:
"Error in reveal.js() : run Knit HTML on the .Rmd file first"
求解?
使用setwd来切换,切换时要看它生成的文件在哪个地方。生成html文件后再用文本编辑器直接去编辑这个html,里面有些帮助的,不过是英文的。实际上我不是很推荐用reports包了,很多功能在以后的slidify包里面都会有的。slidify更为成熟。
删除slidify('index.Rmd'),产生的index.html 中文显示是乱码,求解,谢谢!
回复删除使用win系统就是这样的,换用linux就OK了
删除