java - jfreechart条形图输出

标签 java charts jfreechart series

我需要创建一个条形图,从数据库中列出访问记录的表中读取数据。

表格应显示哪个供应商访问了它(X 轴)、代表谁访问(每个条)以及访问次数(Y 轴)

每个供应商可以代表多个城市进行访问,但每个城市只能有一个供应商。因此,每个供应商可能会显示多个条形......但是,图表中的每个条形都是唯一的,并且按供应商分组。

在 jfreechart 示例中,我看到 x 轴上的每个类别都使用重复系列,但是如何在每个条形图都是唯一的情况下执行我需要的操作?

以下是相关的 servlet 代码:

                           //Municipality, Vendor                                                    //for month of January                           //Vendor  //Municipality                                                 
        if (stmt.execute("Select COUNT(accessFor), accessBy, accessFor FROM bps_bam.access WHERE DATE_FORMAT(accessTime, '%Y %M') = '2012 January' GROUP BY accessBy, accessFor;")) {
            rs = stmt.getResultSet();
        } else {
            System.err.println("select failed");
        }

        DefaultCategoryDataset dataset = new DefaultCategoryDataset(); //Set of values for Bar Graph

        while(rs.next())
        {                    //count           //municipality          //vendor
            dataset.addValue(rs.getDouble(1), rs.getString(3), (String)rs.getString(2));
        }

        counter++;

        JFreeChart chart = ChartFactory.createBarChart(
                "January Access Times", // chart title
                "Vendor", // domain axis label
                "Value", // range axis label
                dataset, // data
                PlotOrientation.VERTICAL, // orientation
                false, // include legend
                false, // tooltips
                false // URLs?
                );



        CategoryPlot plot = (CategoryPlot) chart.getPlot();
        CategoryItemRenderer renderer = plot.getRenderer();
        CategoryItemLabelGenerator generator
            = new StandardCategoryItemLabelGenerator("{0}",
                    NumberFormat.getInstance());
        renderer.setBaseItemLabelGenerator(generator);
        renderer.setBaseItemLabelFont(new Font("SansSerif", Font.PLAIN, 12));
        renderer.setBaseItemLabelsVisible(true);
        renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(
                ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER));


        response.setContentType("image/png");
        //response.addHeader("Refresh", "5");

        //Write numbers on range axis just as integrals, not decimals
        NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
        rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); 

        ChartUtilities.writeChartAsPNG(out, chart, 800, 500);

最佳答案

这就是你想做的事吗?

enter image description here

private static CategoryDataset createDataset() {

    // row keys...
    String series1 = "Municipality 1";
    String series2 = "Municipality 2";
    String series3 = "Municipality 3";

    // column keys...
    String category1 = "Vendor 1";
    String category2 = "Vendor 2";
    String category3 = "Vendor 3";
    String category4 = "Vendor 4";
    String category5 = "Vendor 5";

    // create the dataset...
    DefaultCategoryDataset dataset = new DefaultCategoryDataset();

    dataset.addValue(1.0, series1, category1);
    dataset.addValue(4.0, series1, category2);
    dataset.addValue(3.0, series1, category3);
    dataset.addValue(5.0, series1, category4);
    dataset.addValue(5.0, series1, category5);

    dataset.addValue(5.0, series2, category1);
    dataset.addValue(6.0, series2, category3);
    dataset.addValue(8.0, series2, category4);
    dataset.addValue(4.0, series2, category5);

    dataset.addValue(4.0, series3, category1);
    dataset.addValue(3.0, series3, category2);
    dataset.addValue(3.0, series3, category4);
    dataset.addValue(6.0, series3, category5);

    return dataset;

}

关于java - jfreechart条形图输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15686844/

相关文章:

java - 在 JSF2.0 中动态创建和填充 DataTable

java - JGAP 不保留适者生存

java - MPChartAndroid 库不显示标记 View

javascript - 使用 jqplot 条形图上不需要的线

java - 每当将新数据点添加到 jfreechart 中的现有数据集时,xy 折线图如何自动更新/重绘

java - JFreeChart - 将图表线的 SeriesStroke 从实线更改为虚线

java - 我想编写一个可以记住文件存储位置的程序

java - Spring Boot 使用 Docker 从外部文件夹获取图像

javascript - 在 Zingchart 中定义 'step' 属性会导致图形不可用

java - 如何使 JFreeChart 保持纵横比?