0

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

  1. PIT(时间点)
  2. 值(包含双倍的 gas 消耗)
  3. Car(代表汽车的类)

所以首先我把它们放到这样的表中:

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 步。

4

1 回答 1

2

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

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

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

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

或者使用 a DataColorAction,它允许您根据 Car 以不同颜色可视化标记:

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

关于 y 轴:prefuse 绘制每个标签并忽略实际差异,如果它无法将变量(此处:值)读取为双精度。请检查它是否存储为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

于 2012-02-15T09:54:30.987 回答