如何正确显示Prefuse(Java)表?

时间:2012-01-13 13:56:37

标签: java visualization prefuse

我想通过Prefuse Java可视化表中汽车的一些数据。 使用了三种重要的数据对象:

  1. PIT(时间点)
  2. 价值(含有双重燃气)
  3. Car(代表汽车的班级)
  4. 首先我把它们放到这样的表中:

    car1 | pit1 | value11
    car1 | pit2 | value12
    car1 | pit3 | value13
    car2 | pit1 | value21
    car2 | pit2 | value22
    car2 | pit3 | value23
    car3 | pit1 | value31
    car3 | pit2 | value32
    car3 | pit3 | value33
    

    使用Prefuse项目中的示例,我能够创建一个表格的可视化,其中x轴标记为pit1,pit2和pit3,y轴具有正确顺序的不同值。

    但是我几个小时试过的是以某种方式在相应的位置绘制小方块(如car1的红色方块,其中pit1和value11“相遇”)。

    我该怎么做?

    PS:我也想知道如何通过以下方式改善y轴:

    想象一下,最低值是2.6,最高值是32.0。 现在,y轴将从2.6开始,只标记每个值(标签之间的空格相同,无论实际差异),最高为32.0。 我更喜欢的是标签从0.0(或2.0)开始,然后使用5左右的步骤直到35。

1 个答案:

答案 0 :(得分:2)

您希望在散点图中可视化您的表格,其中x轴为PIT,y轴为值,Car为标记的颜色(=矩形)。

如果我理解正确,你会看到轴标签,但没有标记。

您需要在动作列表中添加ColorAction才能看到标记。例如:

ColorAction color = new ColorAction("data", VisualItem.STROKECOLOR,
                ColorLib.rgb(100, 100, 255));

或使用DataColorAction,它允许您根据汽车可视化不同颜色的标记:

ColorAction color = new DataColorAction("data", "Car", 
                Constants.NOMINAL, VisualItem.FILLCOLOR);

关于y轴:prefuse绘制每个标签并忽略实际差异,如果它不能将变量(此处:值)读取为double。请检查它是否存储为DoubleString。 如果您想从0.0开始,您可以设置范围模型:

y_axis.setRangeModel(new NumberRangeModel(0, 40, 0, 40)); 

PS:我已经为prefuse散点图编写了一个教程:http://www.ifs.tuwien.ac.at/~rind/w/doku.php/java/prefuse-scatterplot