2

TimeTableXYDataset を作成して渡し、StackedBarChart を表示します。これは、デモ パッケージの StackedXYBarChartDemo2 とよく似ています。ItemLabels として表示される値に加えて、すべてのバーの上にすべての値の合計を表示したいと思います。これが実行可能かどうか、そしてどのように知っていますか?

4

1 に答える 1

3

XYItemLabelGenerator2 つのシリーズを合計するカスタムを定義できます。

例えば ​​:

    DateAxis domainAxis = new DateAxis("Date");
    domainAxis.setTickMarkPosition(DateTickMarkPosition.MIDDLE);

    NumberAxis rangeAxis = new NumberAxis("Y");
    // Set a margin so that the label above the bar has a place to display
    rangeAxis.setUpperMargin(0.15);

    StackedXYBarRenderer renderer = new StackedXYBarRenderer(0.10);
    renderer.setDrawBarOutline(false);

    XYPlot plot = new XYPlot(dataset, domainAxis, rangeAxis, renderer);

    // Custom LabelGenerator, which displays the sum of the two series.
    XYItemLabelGenerator generator = new XYItemLabelGenerator() {
        @Override
        public String generateLabel(XYDataset dataset, int series, int item) {
            // Sum values for the two series of data
            double sum = dataset.getYValue(0, item) + dataset.getYValue(1, item);
            return "" + sum;
        }
    };

    // The LabelGenerator is linked to series 1 (top part of the bar)
    renderer.setSeriesItemLabelGenerator(1, generator);
    renderer.setSeriesItemLabelsVisible(1, true);
    renderer.setSeriesPositiveItemLabelPosition(1, new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12,
            TextAnchor.BASELINE_CENTER));
    renderer.setItemLabelAnchorOffset(10);

    JFreeChart chart = new JFreeChart("Stacked XY Bar Chart Demo 2", plot);
    return chart;
于 2013-01-26T10:26:04.507 に答える