BrowserViz 2.10.0
BrowserViz提供了依据,和一个非常简单的工作的例子,互动R /浏览器可视化。因此两个互动强大的和互补的环境有关,创建一个强大的混合设置探索性数据分析。
这工作是出于我们相信现代的web浏览器,支持HTML5和画布,并运行日益强大的Javascript库(例如,d3),cytoscape.js已经成为了最佳设置为探索性数据分析开发交互式图形。我们已经预测,web浏览器、强大和易于编程,将不断改善rendiring权力和交互性,从而保持互动的最佳设置R可视化。
闪亮的和htmlwidgets是两个非常受欢迎的包提供解决这些问题的办法大致相同的问题:如何使用web浏览器的图形从R的力量吗?
这两个包中创建绑定R HTML小部件和Javascript对象。这将创建这些对象在R表示:一个按钮,d3散点图,一个交互式地图。两个包提供优雅的支持这些绑定和一个清晰的路径创造更多。
BrowserViz和这些有价值的包之间的主要不同是唯一的使用松散耦合的R和浏览器。口号形式,我们的方法可以概括,“让R R, Javascript是Javascript”。BrowserViz链接wwo丰富的编程环境,但环境是保持最大限度地对彼此一无所知。只有简单的JSON消息来回传递,这些都是在一个较高的语义级别:没有HTML、CSS和Javascript。而不是创建表示web对象在R,这将是解决两个环境,BrowserViz提供的编程风格
BrowserViz为那些希望创造提供了一个非常低的阈值R / web浏览器可视化。这个基础包隐藏websocket起始的复杂性和消息传递。创建了websocket通信通道与一个R的函数调用。传递消息和处理响应也同样简单。错综复杂或简单的web浏览器接口是由程序员决定的。大量收集容易的书,例子,教程,使web浏览器和支持网站编程特别容易学习。BrowserViz方法将任何感兴趣的程序员感兴趣数据的可视化,并精通——或愿意学习——R和Javascript。
可以创建独立的网站,但这个包的主要目标受众是R程序员职位探索和分析数据和使用浏览器可视化为它提供了不可或缺的好处。我们希望许多可视化工具将被创建。我们提供一个简单的x - y绘图仪(见BrowserVizDemoto说明如何编写一个BrowserViz子类的应用程序。的Biocondcutor RCyjs包是一个功能齐全的网络可视化建立在可视化工具cytoscape.js和web浏览器。
BrowserViz类,虽然一个基类用于子类化,包括一个简单的演示浏览器执行一些基本操作,为一些简单的状态和查询浏览器(窗口大小、窗口标题、浏览器版本)。包的主要目标是提供的websocket“管道”连同一个标准(简单,开放式的)消息协议在两个环境之间的交流。
就像无处不在的和语言无关websocket协议提供了BrowserViz通信机制,因此JSON提供的信息符号。R的本地数据类型(比如命名列表)和Javascript(一个对象,键:值对)很容易转换成和从JSON库标准在每一个语言。R data.frames有点棘手。
我们采用了一个简单的、适应性强的数据结构足够灵活的使用到目前为止遇到的。在JSON和Javascript):
{{cmd:“setBrowserWindowTitle”状态:“请求”,回调:“handleResponse”,有效载荷:BrowserViz演示"}}
Websocket服务器发送和接收消息。因此一个典型BrowserViz事件始于发送消息从一个环境到另一个,和常常与某种回报或总结回调消息。
成功”,
失败”,错误”,
延迟响应”。库(jsonlite)味精< - toJSON(列表(cmd =“setBrowserWindowTitle”=“请求”状态,调=“handleResponse”,有效载荷=“BrowserViz演示”))
这个请求的回调可能是空的,按照惯例我们编码为空字符串。调用代码,R,接收代码,在Javascript中,只需要保持一致。如果调用者提供了一个非空回调,Javascript接收器应该与规范工艺和发送返回消息指定四个字段cmd =回调和任何有效载荷调用者预计,也许
{cmd:“handleResponse”状态:“成功”,回调:“”,有效载荷:“BrowserViz演示”}
一个空有效载荷也可以使用,在这种情况下,成功返回状态返回的命令是唯一的信息从Javascript r .所有决策的程序员。往往同一个人写R的Javascript代码和websocket来回。如果涉及不同的程序员,那么仔细沟通和文档是必需的,预期的约束和载荷(结构。
我们预测,主要利用BrowserViz将作为其他富裕的基类visualzation包,而且这些派生类的作者将可以继续没有任何直接参与的螺母和螺栓websocket创建和处理。尽管如此,BrowserViz是一个完整的R /浏览器应用程序,尽管一个只有几个特性。这些特性(R BrowserViz对象上的方法),虽然他们几个,自动提供给所有BrowserViz子类。
最后两个使用这些方法在日常测试的方案。概念上很简单,他们也说明基本使用方法:
请注意,browserVizBrowserFile第二和第六行所示,这是包含在这个包中,结合了HTML、javascript和css。当你构建一个BrowerViz应用程序中,您提供这个文件名;这个文件被发送到浏览器。当在浏览器中接收和解释,呈现的HTML页面,和Javascript代码执行时,请求websocket连接回来R会话的http / websocket服务器。建立连接后,消息可以在两个环境之间来回流动,R和web浏览器。
库(BrowserViz) browserVizBrowserFile < -系统。文件(包= " BrowserViz”、“browserCode”,“距离”,“bvDemoApp.html”) PORT_RANGE < - 12111:12120如果(BrowserViz: webBrowserAvailableForTesting ()) {bvApp < - BrowserViz (browserFile = browserVizBrowserFile安静= TRUE)数据< -列表(小写=字母,大写=字母)json。< - roundTripTest (bvApp,返回数据)的数据。< - fromJSON (json.returned)返回消息(sprintf (“% 5 d字节交换”,nchar (json.returned))) stopifnot (data = = data.returned) html < - sprintf (“< h3 >往返json编码的数据,% d字符< / h3 > ", nchar (json.returned)) displayHTMLInDiv (bvApp、html " bvDemoDiv ")}