我想通过 Prefuse Java 在表中可视化有关汽车的一些数据。 使用了三种重要的数据对象:
- PIT(时间点)
- 值(包含 Double 形式的 Gas 消耗)
- 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 轴以正确的顺序标记不同的值。
但是我已经尝试了几个小时,就是以某种方式在相应的点绘制小方 block (例如 car1 的红色方 block ,其中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 轴:如果 prefuse 无法将变量(此处:Value)读取为 double 值,则 prefuse 会绘制每个标签并忽略实际差异。请检查它是否存储为Double
或String
。
如果您想从 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
关于java - 如何正确可视化 Prefuse (Java) 表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8851655/