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


PIT(时间点)
价值(包含双倍的汽油消耗量)
汽车(代表汽车的类)


所以首先我将它们放入这样的表中:

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。

最佳答案

您想在散点图中可视化表格,其中PIT在x轴上,Value在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轴:如果无法读取双精度变量(此处为值),则预熔会绘制每个标签并忽略实际差异。请检查它是否存储为DoubleString
如果要从0.0开始,则可以设置范围模型:

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


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

10-02 04:17
查看更多