当前位置: 首页 > 面试题库 >

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

程毅
2023-03-14
问题内容

我目前很容易绘制散点图,其中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);

我将如何修改此代码以获取从图的底部到该点的粗线而不是每个点的小方块?

谢谢。


问题答案:

我想我可能应该指出我是如何做到的-毕竟堆栈溢出也应该是一个存储库。在代码的早期是以下内容:

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;
    }
});

我扩展了形状渲染器,以始终返回正确宽度和高度的矩形,并将其放置在应该位于其左侧的半格处。如果您想将杠铃放置在中间,则需要自己进行设置-预涂不会帮助您。

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;
    }
});


 类似资料:
  • 本文向大家介绍如何使用JavaScript创建SVG图形?,包括了如何使用JavaScript创建SVG图形?的使用技巧和注意事项,需要的朋友参考一下 所有现代浏览器均支持SVG,您可以使用JavaScript轻松创建它。Google Chrome和Firefox均支持SVG。 使用JavaScript创建一个空白的SVG文档对象模型(DOM)。使用属性创建形状,例如圆形或矩形。

  • 问题内容: 有人可以告诉我创建条形码扫描器应用程序(对于Android)是否困难?OpenCV库是一个好的开始吗?在哪里可以找到清楚说明如何读取条形码的算法?我将感谢有关该主题的所有优秀材料! 提前致谢! 问题答案: ZXing项目提供了一个独立的条形码读取器应用程序-通过Android的意图机制-希望集成条形码扫描的其他应用程序可以调用该应用程序。 最简单的方法是从应用程序中调用ZXing SC

  • 问题内容: 我正在尝试使用ApachePOI在XLSX电子表格中创建条形图,但是Excel一直在说内容存在问题,并在尝试打开文件时删除该图。这是我要执行的操作的完整代码: 谁能帮助我找到(并且很好地解决)这个问题?提前致谢! 问题答案: 对于不了解背景的用户,ApachePOI仅支持ScatterCharts和LineCharts为什么?。原则上描述了如何进行。 就像我说的。首先进行 最简单 的条

  • 问题内容: 一般来说,我刚接触Java和Android编程,但是我想创建一个小型Java库,以便在普通(非Android)Java应用程序和Android应用程序之间共享一些代码;所以我的问题是用Eclipse创建普通Java库的最佳方法是什么? 我在任何地方都找不到从Eclipse创建新的Java库项目的选项。这是否意味着我必须使用普通的Java应用程序作为起点?因为这也将用于普通的Java应用

  • 问题内容: 问题: 是否可以在迁移脚本中创建一个新的数据库,然后连接到它?怎么样? 我的场景: 我正在尝试在Java项目(使用Jersey2.4 + tomcat 7 + PostgreSQL 9.3.1 + EclipseLink的RESTful应用程序)中使用flyway来管理使用git的不同开发人员之间的更改。我写了自己的初始化脚本,并运行了: 而且效果很好。问题是我无法使用脚本创建新的数据