全文共字,预计学习时长5分钟
在ggplot2、seaborn、shiny、Dash、R或python之上,还有哪些更高级的程序语言?有关数据可视化“更上一层楼”的秘诀,本文将一一道来。
众所周知,对许多企业来说,数据即商机。因为数据能为企业提供更优质的决策和预测。开拓市场、模型诊断及生产制造,各个阶段都需要研究数据。而其中涉及的工具更是五花八门,从Excel到通过pythonmatplotlib进行的Tableau。不同的要求会给数据研究的自动化带来不同程度的难处。
显而易见,在对股东或其他观众做汇报时,人人都想用美观炫酷、交互性强的商业仪表板来汇报业绩,沟通工作。其标准流程是将解决方案打包成网络应用程序(让其在客户端与服务器中共同运行)。
用数据科学领域的经典工具包创建网络应用,总会出现很多让人沮丧抓狂的问题。不过,有一个极好的解决方案可以提供给你——该方案涉及Lisp算法(该算法的一种特定语言),人工智能渊源最久的计算机语言之一。
本文适用于任何需要在工作中进行数据可视化的人,尤其是那些需要在网络应用里实现其高度个性化与灵活化的业界人士。话虽如此,任何致力于打造个性化用户界面的数据科学家也能从本文获益。在阅读全文前,如果你从未接触过ggplot2和plotly,建议你先恶补相关知识,因为它们涉及数据可视化的一些标准逻辑,能提供一个基准来对二维线画图函数作出预测。
问题
在数据科学家们看来,R或python是最杰出的计算机语言,两者都有一个用来制作互联网应用的标准数据库——Shiny库与Dash库。这两个数据库都可用来制作网络应用,搭建起沟通主语言与javascript——同时也相当于js——的桥梁。它们还可用于浏览器(前端)与服务器(后端)之间的信息交流(如数据传输与用户交互),在该过程中,应用以主语言运行,直到程序终止为止。
此外,它们还处理js的异步数据交互,为缓解应用部署压力起到积极作用。说句公道话,在上述方面,这两种语言的作用举足轻重。但是,前端与后端的归并也会带来很多不便,大幅降低这些应用框架的使用价值。
1.用户如今已习惯了这样一个流畅迅捷、功能多样的动态行为界面,即使是错误信息也会以动态UI的形式得到呈现。出于对js的规避,shiny与dash的用户往往在按照要求实现HTML的个性化输出上力不从心。例如,根据浏览器的宽度尺寸来创建一个带色按钮,如果不用js,操作起来会很困难。就算真有这样的方法存在,它也需要一个联通前端与后端的通信循环,而这瑕疵颇多,并不理想。
2.用shiny与dash这两种框架很难编写出真正意义上的模块元件。这里的关键原因在于HTML节点所进行的用户事件会触发HTML节点标识符与后端效应的强耦合。此外,就shiny而言,因为环境,命名空间与模块在R里并不常见,所以用其制作一个模块元件很难。
3.最后,即最重要的一点,这两个框架的发展进程令人懊丧。以这些程序包为基础的反馈周期漫长得令人发指:生产环境中会生成新的特征、成分、视图与标签,每当源代码出现一处变动,后端就会重启,互联网浏览器就要刷新,研发者就要保存当前特定状态,以确认这次调整是否达到预期效果。在一定规模的项目中,数据和程序包在一开始便被上传,每一次迭代发生变化时,研发者就要费工夫进行初始化。最糟的是,区区一个句法错误,就会让整个应用在重载中崩溃(注意,模拟两种系统的热重载会有被黑的风险。后端在处理文本区域时还会根据eval