【发布时间】:2016-12-19 23:44:50
【问题描述】:
总体目标
我希望能够使用 RShiny 快速绘制来自 R 的大量数据,然后进行小的修改或添加,而无需重新渲染所有绘制的数据。
具体任务
- 在散点图中绘制大量点 (
- 响应鼠标点击,检测最近的绘图点。
- 使用从与该点相关的数据中查询到的一些信息,突出显示少量其他点 (
当前方法
我目前使用 ggplot2 和 RShiny 制作应用程序来帮助进行数据分析。总的来说,我对这种组合非常满意。因此,理想情况下,该解决方案将允许我仍然主要使用这些工具。
仅使用 RShiny 和 ggplot2 的内置功能,我完成任务没有问题,除了步骤 3 不能独立完成,无需重做步骤 1。据我了解如果不完全重新渲染它们,就无法更新或覆盖 ggplot2 图。
因此,我正在寻找以下其中一项来实现我的总体目标,按偏好降序排列:
- 一种无需重新渲染即可覆盖或修改 ggplot2 图的方法。
- 允许此操作的基于 ggplot2 的扩展或 fork 或类似 R。
- ggplot2 的替代方案,同样易于与允许此操作的 RShiny 和 R 数据集成。也许是现有 javascript 库的某个接口?我仍然希望能够使用我熟悉的所有 RShiny 机器来操纵我的情节并与之互动。
我对 js 有一些了解,但不想学习 d3 之类的东西来完成这么小的任务。 (如果可以使用少量的 d3 或 js 来做到这一点,那就太好了!)能够在 ggplot2 绘图上有效地绘制 svg 会很好,但使用相同的坐标系。
我知道this question,但提供的解决方案是针对时间序列数据的。
【问题讨论】:
-
你看过
plotly吗?它有一些交互性。还有ggvis,不过还真没写完——很明显。 -
我简要地看了看。我的印象是 ggplotly 函数在完成第 1 步时要慢得多。如果有一种方法可以以某种精简的方式将 R 与 plotly 一起使用,那可能会很好。我对 ggvis 不熟悉,可能就是这个问题。
-
ggvis是 Hadley Wickam 的下一个大作,应该为 ggplot 添加交互性。不幸的是,这需要比他最初想象的更多的重组,因此比最初宣布的时间要长一两年。 -
您也可以直接在带有网格的 ggplot 输出上绘制。但这并不容易,关于各种坐标系和布局的文档充其量也很少(大多数情况下您需要查看代码才能弄清楚)。
-
所以看看 ggplot2 的 github 源代码(它不是你常用的 R 代码)。特别是看看来自 github 用户 baptiste 的
gridExtra库。在那个库中,你会看到很多你需要理解的东西。
标签: javascript r ggplot2 shiny