如何动态将元素添加到Roassal RTGrapher实例?

时间:2019-03-16 15:55:10

标签: pharo roassal

Object subclass: #MultiData
    instanceVariableNames: 'b'
    classVariableNames: ''
    package: 'CFR-Extensions'

initialize
    b := RTGrapher new.

    b add: (self makeD: #('hello' 1 2 1)).
    b add: (self makeD: #('test' 1 2 11)).

    b

makeD: first
    | d |
    d := RTVerticalMultipleData new.
    d barShape color: Color blue.
    points := OrderedCollection new.
    points add: first.
    d points: points.
    d addMetric: #second.
    d addMetric: #third.
    d addMetric: #fourth.

    "Rotated text"
    d barChartWithBarTitle: #first rotation: -30.
    ^d

以上本质上是罗萨尔著作中的Several metrics per data point example,分为两种方法。我一直在研究尝试在程序运行时添加数据的方法,而不仅仅是可视化静态数据集。我想可视化表格式RL代理的参数跟踪。

当我在检查器中显示图形时,会发生的事情是只有最新的元素显示为图表。标签中有一些覆盖,但不应覆盖。

本来我想做类似传递OrderedCollection点的事情,但是RTVerticalMultipleData将它们编译成Trachel元素的方式使这种方案无效,因此我考虑过在之前对数据进行批处理将其添加为元素。

上面的方法不起作用的事实使我感到不满意。除了解决此问题,我想知道是否有更好的方法来可视化动态数据?

1 个答案:

答案 0 :(得分:1)

我对解决您的问题并不了解,但对于动态可视化,Pharo也有Telescope项目。 (https://github.com/TelescopeSt/Telescope

当前,Telescope仅通过Web可视化(使用Cytoscape连接器:https://github.com/TelescopeSt/TelescopeCytoscape)与Seaside一起使用。在以下位置查看演示:https://demos.ferlicot.fr/TelescopeDemo

我不知道Web可视化是否适合您,但我以防万一。