1

我想使用 R 生成一些图形/绘图/图表,然后使用 GTK 显示它们。一个特点是绘图必须能够自动更新并具有一些交互功能,例如设置最大值/最小值标签、重新缩放、允许标准化等......数据集可能是数千个数据的数量级点,可能高达一万。

是否有任何库/模块已经这样做了?我的 Google-fu 很弱。我不介意 c++ 或 python 。

如果没有这样的库,我怎么能做到这一点

注意:该系统是嵌入式的——它当然没有 Internet 连接,但有一个内部网络。使用网络会大大增加系统的成本,因此它不是解决我的问题的好方法。

4

4 回答 4

4

由于您也将 python 放入了标签中,也许matplotlib会引起一些兴趣?以防万一。

于 2012-11-09T13:47:56.467 回答
2

首先,R 的核心不具备交互式绘图功能——这与使用编程语言本身控制几乎所有东西的想法背道而驰。

有一些库允许您创建或多或少的交互式绘图,从locator需要包装到 R 程序中的简单函数开始,包括manipulate来自 RStudio 的包以及iplot包。甚至还有一个基于 GTK+ 的 R 包,称为playwith.

根据您实际想要实现的目标,也许使用 gnuplot 会是一个更好的主意。

于 2012-11-09T11:21:57.177 回答
2

我想知道这些图形设备是否会出现 10,000 点的问题,并且在gWidgets运行此脚本的情况下RGtk2Qt它的速度快到可以接受的程度(当然在我的老机器上 100,000 点太多了):

library(gWidgets)
options(guiToolkit="RGtk2")
w <- gwindow("test")
pg <- gpanedgroup(cont=w)
fl <- glayout(cont=pg)
gg <- ggraphics(cont=pg)
size(gg) <- c(600, 600)

fl[1,1] <- "No. points"
fl[1,2] <- no_pts <- gedit("10", cont=fl, coerce.with=as.numeric)
fl[2,2] <- gbutton("click me", cont=fl, label="", handler=function(h,...) {
  n <- svalue(no_pts)
  plot(rnorm(n), rnorm(n))
})

如果这个速度是可以接受的,那么可以相对容易地根据您的特定需求制作一个符合游戏规则的 GUI。可能是该cranvas软件包可以使 Qt 更快。

否则,我不知道rgl邓肯·默多克的包裹是否有用,但它可能有用。Simon Urbanek 在上次用户会议上做了一个非常好的演示,其中一些浏览器中的 openGl 图形引擎允许超过 1,000,000 点的非常快速的绘图,这是通过 websocket 完成的。

于 2012-11-09T19:11:19.953 回答
1

对于允许来自服务器的这种功能的基于 Web 的解决方案(Web 是未来 :)),我会看看 Rstudio 的人们刚刚发布的闪亮包。它看起来像您需要的,无需您进行任何编程。您还可以获得任何拥有浏览器的人都可以从任何地方打开它的好处。看到这个链接:

http://blog.rstudio.org/2012/11/08/introducing-shiny/

于 2012-11-09T14:35:39.503 回答