用R语言让你的图动起来!

用R语言让你的图动起来!

在讲述由数据驱动的故事时,动画往往比其他形式更加引人注目。我们的眼睛天然地被鲜艳的色彩和动作所吸引。优秀的可视化可以引起观众的兴趣,给他们留下深刻的印象。幸运的是,一系列便捷的R语言包使可视化过程变得非常简单。本文中的所有可视化案例都可以进一步分解,并在MatrixDS项目中运行。读者只需要对基本绘图有一定了解即可。
在开始制作图表之前,首先应该问问自己:是不是非要做动态图不可?如果你正在进行探索性数据分析,那么一个运动的图形可能不是你的最佳选择。但是,如果你需要进行演示,那么一些精心设计的动画图形可以让观众更加了解你的演讲主题,这当然要比静态的图形展示更加富有表现力。
创建动画时,图片实际上不会移动。其实,我们只是构建了很多单独的图片,然后像放电影一样把这些帧串联在一起,就像是老式的翻书动画和卡通片。当制作动画的时候,每一帧都来自不同的图。这些图是利用聚合数据的子集构建的,把这些子集缝合在一起就形成了动画流动。
动态数据可视化的构成机制
数据的子集越多,画面就会更加平滑。这是动画需要考虑的重要因素。如果每一层的数据太少,最后只能够生成几帧,那么动态效果就不那么明显。这种情况下,建议使用静态面板图。这种图可以在ggplot中创建,比如使用分面。另一种方法是使用插值法和tweener包来扩展数据集。
动画的优势之一是它可以拓展我们能够可视化的变量个数,我们可以让数据集中的变量来“驱动”动画。上图是利用含有六个变量的数据集构建的,动画能够很好地捕捉着这六个变量的变化!数据样式如下:
我们可以使用这六个变量中的任意一个进行动态显示。不过不动脑筋就随便选是非常危险的。有些变量比其他变量更适合动态显示。例如,动画随时间而发生变化是不言而喻的;所以,使用分类变量来生成动画就会非常混乱。
GDP可视化的正确使用方式:慢慢滚动。
GDP可视化的错误使用方式:我不知道这图在干什么……
动画在这些使用场景中比较有价值:
1.随着时间而变化;
2.迭代/递归技术产生的变化(比如梯度下降和贝尔曼方程)
3.在随机模拟中的变化
需要注意的关键点在于数据中的重要变化,我们要用这个变化的变量来驱动动画。
下面让我们来进行实践操作!这些代码都可以在MatrixDS项目中找到。
程序包
推荐四个R语言动画制作包:
1.animate:可以让任意格式的图片动画化,作者是谢益辉
2.gganimate:可以把ggplot创建的图像动画化,作者是ThomasLinPedersen
3.plotly:一个具有动画功能的交互式绘图库
4.googlevis:基于Flash的动态图制作方案
总体上讲,animate包提供了最全面的控制力,对于基本图形很有用,但代码可能很冗长。另一方面,gganimate包仅支持一个绘图库,但可以非常容易地将ggplot转化为动画(在绘图代码中添加一两行代码即可)。与gganimate类似,plotly只能对自身支持的绘图进行可视化设置。Googlevis受到的限制是最多的,只支持基于Flash的一种动画制作,这种图的应用面越来越窄。
使用animate
使用animate包的话,如果你已经参照文档并安装了所需的软件,可以导出五种格式的文件:
1.HTML(可以带控件)
2.Video(mp4)
3.GIF
4.LaTeX
5.Flash
这个软件包非常棒,其中一大原因就是它提供了很多内置的统计图形作为示例。这里我们展示一个带控件的HTML页面,它用动画显示了梯度下降的过程:
library(animate)
desc=c(“ThisisasupercoolexampleofGradientDescent”)
saveHTML({
f1=function(x,y)x^2+3*sin(y)
xx=grad.desc(f1,pi*c(-2,-2,2,2),c(-2*pi,2))
xx$persp(col=”lightblue”,theta=30,phi=30)
},title=”DemoofGradientDescent”,description=desc,verbose=FALSE)
梯度下降的示例(利用animate包)
有的时候你希望用户能够使用控件来控制动画效果。在这个示例中,你可能想要通过暂停3D曲面图像来得到最后一帧的图片。具有此类控件的动画实时版本托管在MatrixDS项目中的静态Web服务器上。
这个软件包最强大的功能是可以使用任何可视化工具来搭建框架,例如上面对比可视化是否合适的案例就是使用了animate和ggplot来构建的。
使用gganimate
使用gganimate包,默认导出是GIF格式的文件(使用gifski,必须先安装rust)。不过根据用户的具体要求,还可以导出其他格式。本文中的第一个动画示例是使用gganimate包构建的(实际上它是包中自带的README文档中唯一完整的实际数据示例)。下面我们展示这个软件包wiki中的另外一个案例,最终输出了一个视频格式的文件(作者是TomWestlake)。这是一个Anscombe四重奏的新变换,这一系列的图都有同样的统计学汇总数值,其中一个图看起来像一个恐龙!所有的这些只需要在ggplot基础上加入几行额外代码。
library(datasauRus)
library(ggplot2)
library(gganimate)
ggplot(datasaurus_dozen,aes(x=x,y=y))+
geom_point()+
theme_minimal()+
transition_states(dataset,3,1)+
ease_aes(‘cubic-in-out’)
这是数据小恐龙!
使用Plotly
最后一个要介绍的包是plotly,很多可视化从业者与这个包都有过充满爱恨情仇的故事。它让我们能够简单地创建精美的交互式图,但是操作简单是以灵活性和风格的损失为代价的,而且绘图之后你还必须想办法清除plotly的logo。不过我觉得这些麻烦事还是值得的。下面的例子中,我们演示了plotly文档的一个示范(使用了frame参数)。它跟上面的gganimate包的例子一样,都使用了gapminder数据集:
library(plotly)
library(gapminder)
p%
plot_ly(
x=~gdpPercap,
y=~lifeExp,
size=~pop,
color=~continent,
frame=~year,
text=~country,
hoverinfo=”text”,
type=’scatter’,
mode=’markers’
)%>%
layout(
xaxis=list(
type=”log”
)
)
一旦你完成了绘图,就可以将其送入plotly的托管服务。这里面你可以使用所有绘图的嵌入组件,包括播放按钮。这其实上是在媒体上获取交互式图形的少数方法之一!它的一个缺点是,免费版的图形托管服务最多只能放25张图。
Gapminder可视化的plotly版本(https://plot.ly/~RPlotBot/4595.embed?autosize=true&referrer=https%3A%2F%2Ftowardsdatascience.com%2Fmedia%2Fe98cacd5d473a475392495880b6ed2e2%3FpostId%3Df94ae20843e3)
小结
现在,你拥有了在R语言中构建动画可视化所需的一切。你可以将这些动画放在演示文稿、网站和博客中。
编译组:韦振琛、黄天元
如需转载,请后台留言,遵守转载规范

主题测试文章,只做测试使用。发布者:最新稳定辅助网,转转请注明出处:https://www.744broad.com/16623.html

(0)
上一篇 2023年3月10日 上午11:22
下一篇 2023年3月10日 上午11:27

相关推荐

  • Python 什么时候会被取代?

    Python 什么时候会被取代? 为什么Python不是未来的编程语言?作者|RheaMoutafis译者|弯月,责编|郭芮出品|CSDN(ID:CSDNnews)以下是译文:Python经过了几十年的努力才得到了编程社区的赏识。自2010年以来,Python得到了蓬勃发展,并最终超越了C、C#、Java和JavaScript。但是,这种趋势将持续到什么时候…

    RUST资讯 2023年2月19日
    80
  • “宁做泼妇,不做弱妇!”妈妈写给远嫁女儿的一封信刷爆朋友圈!

    “宁做泼妇,不做弱妇!”妈妈写给远嫁女儿的一封信刷爆朋友圈! 掘金首页动态话题小册活动搜索掘金搜索写文章登录注册_Hahn_2019年01月08日阅读566《蜘蛛侠:平行宇宙》的视觉解析与滤镜实现早在四年前,索尼想要制作全新风格的“蜘蛛侠”电影这一消息被泄露时,一个显眼的词汇便被反复提及——“rejuvenate”,译为“使其恢复年轻”。当时,除去《蜘蛛侠:…

    RUST资讯 2023年2月13日
    80
  • 世界上最受欢迎的主题公园

    世界上最受欢迎的主题公园 迪士尼在主题公园中占据主导地位并不足为奇,即将到来的星球大战开幕式可能会给娱乐巨头带来巨大的出席率。根据2018年主题娱乐协会(TEA)的吸引力公布的报告,世界上最受欢迎的主题公园-位于佛罗里达州布纳维斯塔湖的沃尔特迪士尼世界的神奇王国-在2018年迎来了2090万游客,从2017年开始增加了2%。在全球25个访问量最大的主题公园中…

  • 艾尔登法环2022年3月最新解决卡顿破解锁144帧方法

    艾尔登法环2022年3月最新解决卡顿破解锁144帧方法 因为之前做的视频讲解艾尔登法环怎么解决卡顿,然后很多粉丝还是不知道怎么弄。今天特意发一篇文章再次说明下如何使用。大家都知道艾尔登法环由于是主机游戏在PC端会锁60HZ,今天给大家介绍一个软件可以解决这个问题突破到144HZ甚至是240HZ。屏幕是多少HZ的就设置多少HZ需要注意的是该软件只能用在离线模式…

    RUST资讯 2023年2月22日
    140
  • 优化思维【6】安全性

    优化思维【6】安全性 前五篇,主要考虑性能优化,只有第二篇与安全性相关。其实区块链业界一直不缺乏黑客,最近看过不少安全事故导致惨重代价,所以想总结点安全性方面的优化思路。(本篇比较务虚,只是大体思路。)总的来说,为了安全是必须付出实现或者性能代价的。实现代价是开发、测试阶段就要投入更多精力,性能代价是因为考虑更多,有可能消耗更大运行资源。但从长期来看,这些代…

    RUST资讯 2023年3月10日
    20
  • 为什么要学Java,这八大优势告诉你

    为什么要学Java,这八大优势告诉你 如今互联网蓬勃发展,继Java、C++、php后也不断涌现出了许多新的编程语言,例如Python、GoogleGo、Apple’sSwift和Rust。​有许多可行且可靠的编程语言供你选择,每种语言都有各自的优点和缺点。特别是Python,因为简单易学的优势,大有后来居上的趋势。那么问题来了,为什么现在学习J…

  • 亚历鲍德温「误杀」后首受访 哭喊「我没开枪」

    亚历鲍德温「误杀」后首受访 哭喊「我没开枪」 亚历鲍德温受访时激动落泪。亚历鲍德温(AlecBaldwin)10月21日在片场不慎用道具枪误杀摄影指导,案件爆发后,目前仍在调查中,但该案引起男主角亚历不小阴影,他近期首度接受「ABC」电视台访问,预告近期释出,只见他在过程中多次落泪,强调自己没有对人开枪,是枪支突然走火,「这是我在ABC做过数千次访问中,最让…

  • Java生态系统中最重要的元素

    Java生态系统中最重要的元素 JVM是最重要的元素,其次是浩瀚的库和工具链的完整性。圆润度使其非常实用。JVM是生态系统的基础。它为Scala和Kotlin提供了基本的VM支持。JVM保证语言的互操作性。这是Java生态系统的第二大优势。这套图书馆可以以一种很好的,可预测的方式互相玩耍。JVM是一个很好的平台-快速并且无处不在运行代码。开放与.NET等其他…

    RUST资讯 2023年2月18日
    70
  • 实例分享,控制板卡故障检修技巧

    实例分享,控制板卡故障检修技巧 故障:控制失效。检修:经查24V转5V,3.3V电压无输出,查24V输入相关保险及相关二极管正常,查电容无短路,电容VI曲线正常,此板还有他人维修痕迹,属曾经维修不成功模块。此模块采用step-down降压式开关稳压芯片LTC3707EGN,它的典型电路如图6.37所示。先不怀疑芯片损坏,查周边元件,当查到一个标称242(2….

  • 挚舍南禅观水酒店,无锡——源于历史,归于自然

    挚舍南禅观水酒店,无锡——源于历史,归于自然 项目位于无锡南禅寺脚下,旧民居群中,清名桥古运河之滨,故取名为“南禅观水”。随着时代变迁和城市更新,本哲在解构民宿建筑新含义的同时,又传承了历史文化遗产的精髓。ThisprojectislocatedatthefootofNanchanTempleinWuxi,amongaclusterofcivilianhou…

    RUST资讯 2023年3月11日
    20
关注微信