如何使用Java prefuse库创建条形图?

我目前已经预先绘制了散点图,其中X轴是计算机名称,Y轴是它的温度。 如何让它绘制显示值而不是离散点的条形图?

我目前正在使用以下代码来呈现这些点:

ShapeAction shape = new ShapeAction(group, Constants.SHAPE_RECTANGLE); ColorAction strokeColor = new DataColorAction(group, dataType, Constants.NUMERICAL, VisualItem.STROKECOLOR, colorPalette); ActionList draw = new ActionList(); draw.add(shape); draw.add(strokeColor); draw.add(new ColorAction(group, VisualItem.FILLCOLOR, 0)); draw.add(new RepaintAction()); m_vis.putAction("draw", draw); 

我将如何调整此代码,而不是每个点上的一个小方块,从图的底部到点?

谢谢。

我想我应该指出我是如何做到的 – 毕竟Stack Overflow也应该是一个存储库。 代码中的早期内容如下:

 m_vis.setRendererFactory(new RendererFactory() { Renderer yAxisRenderer = new AxisRenderer(Constants.LEFT, Constants.TOP); Renderer xAxisRenderer = new AxisRenderer(Constants.CENTER, Constants.FAR_BOTTOM); Renderer barRenderer = new ShapeRenderer(); public Renderer getRenderer(VisualItem item) { return item.isInGroup("yAxis") ? yAxisRenderer : item.isInGroup("xAxis") ? xAxisRenderer : barRenderer; } }); 

我将形状渲染器扩展为始终返回一个正确宽度和高度的矩形,并将其定位在它应该到达的位置左半边。 如果你想把你的酒吧放在中心,你需要自己做 – prefuse对你没有帮助。

 m_vis.setRendererFactory(new RendererFactory() { Renderer yAxisRenderer = new AxisRenderer(Constants.LEFT, Constants.TOP); Renderer xAxisRenderer = new AxisRenderer(Constants.CENTER, Constants.FAR_BOTTOM); Renderer barRenderer = new ShapeRenderer() { protected Shape getRawShape(VisualItem item) { double x = item.getX(); double y = item.getY(); if (Double.isNaN(x) || Double.isInfinite(x)) x = getInsets().left + axisWidth + totalBarWidth / 2; if (Double.isNaN(y) || Double.isInfinite(y)) y = 0; double width = totalBarWidth / (barCount + 1) - barGap; double height = getHeight() - getInsets().bottom - axisHeight - y; x -= width / 2; return rectangle(x, y, width, height); } }; public Renderer getRenderer(VisualItem item) { return item.isInGroup("yAxis") ? yAxisRenderer : item.isInGroup("xAxis") ? xAxisRenderer : barRenderer; } });