在 Tibco Spotfire 中动画化数据变化

Animating Data Changes in Tibco Spotfire

这是我第一次post来这里,所以如果我在途中有什么礼仪方面的问题,请原谅我。

我正在处理一个 POC,该 POC 处理在 Tibco Spotfire 7.0 中动画可视化,这将允许用户通过迭代一组过滤器或通过基于预先确定的一组条件。 TIBCOmmunity 已经为此目的定义了一个自定义工具 http://tibcoanalytics.com/spotfire/archive/totw/2011-01-16.html。然而,我的任务是证明这可以在 Iron Python 脚本中完成。 POC 在概念上相当简单,我需要一个动作控件来将散点图上的一个点绕圆圈移动。以下是我目前正在使用的 Python。我遇到的问题是强制 Spotfire update/refresh 循环内的可视化。帮忙?

import time
import math
R = Rad; #parameter containing the radius of the circle
x_0 = xc; #parameter containing the center x coord
y_0 = yc; #parameter containing the center y coord

t=0.00
while t<(2*math.pi):
    x = R*(math.cos(t)) + x_0;
    y = R*(math.sin(t)) + y_0;
    t+=0.01
    Document.Properties['xc'] = x
    Document.Properties['yc'] = y
    #code to force the visualization/document to refresh/update goes here
    time.sleep(1/360)

这并没有直接回答您的问题,而是为您提供了一种创建可与文档属性交互的计时器的方法。抱歉,我没有时间提供明确的答案。因此,请随意不要将其标记为已接受 - 也许其他人有更好的。

您的代码不起作用的原因是 IronPython 引擎在执行完成之前锁定 Spotfire。假设可视化不更新,您就离得不远了:实际上整个应用程序都没有更新!您可以通过将睡眠值设置为 1 秒来测试我在评论中提到的这一点。

我前段时间创建了 this DXP 来说明如何允许 IronPython 和 Javascript 代码在文本区域内相互交互。 IP->JS 页面应该会为您提供一些有关如何构建动画解决方案的线索。

这里的幕后情况:

  1. a Spotfire 属性 <div> 内的控件(输入区域)允许用户输入文本
  2. 一个名为 update 的 Javascript 函数定期运行:var timer = setInterval(update, 1000);
  3. update函数使用JQuery通过其父<div>访问输入区域:var text_in = $("#input_container").text();
  4. update 最终将 "output" 容器 <div> 中的文本替换为修改后的文本:$("#output_container").html(rainbowize(text_in));

您可以修改此示例以使用 JQuery 输出到文档 属性 链接的输入区域。换句话说,使用 Javascript 定时器 setInterval() 而不是 time.sleep().

我希望我已经很好地解释了这一点。如果不清楚请告诉我:)