JFree:堆积区域图表在最后一点之后和之前继续绘制

时间:2016-08-04 07:56:01

标签: jfreechart stacked-area-chart

我想在第一点获得带有开始图表的堆积区域图表,并在最后一点完成,如下所示:enter image description here

但是图片不在这里的范围: enter image description here

如何使叠加区域从第一个点开始准确地完成并完全在最后一个点完成? (使用dateAxis.setLowerMargin(-0.075D)dateAxis.setUpperMargin(-0.075D)的不同操作没有帮助)

    JFreeChart stackedAreaChart = ChartFactory.createStackedAreaChart(name, X_AXIS_TITLE, Y_AXIS_TITLE, dataset,
            PlotOrientation.VERTICAL, true, true, false);
    CategoryPlot plot = stackedAreaChart.getCategoryPlot();
    CategoryAxis dateAxis = plot.getDomainAxis();
    dateAxis.setLowerMargin(-0.075D);
    dateAxis.setUpperMargin(-0.075D);
    dateAxis.setCategoryMargin(0.0D);
    StackArea renderer = new StackArea();

    dateAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
    ...

    plot.setRenderer(renderer);
    renderer.setBaseItemLabelGenerator(new LabelGenerator());
    renderer.setBaseItemLabelsVisible(true);
    ...
    plot.setRenderer(renderer);
    plot.setAxisOffset(new RectangleInsets(5.0, 1.0, 5.0, 1.0));        

    ValueAxis rangeAxis = plot.getRangeAxis();
    NumberAxis axis2 = new NumberAxis(Y_AXIS_TITLE);    
    axis2.setAutoRangeIncludesZero(false);
    axis2.setLabelFont(rangeAxis.getLabelFont());
    axis2.setTickLabelFont(rangeAxis.getTickLabelFont());
    ...
    plot.setRangeAxis(1, axis2);
    plot.setRangeAxisLocation(1, AxisLocation.TOP_OR_RIGHT);
    plot.mapDatasetToRangeAxes(0, Arrays.asList(0, 1));

    setAxisColor(rangeAxis, axisColor);
         rangeAxis.setTickLabelPaint(ColorUtils.VaadinAWTColor(params.getColorParams().getFontSlideColor()));
    rangeAxis.setLabelPaint(ColorUtils.VaadinAWTColor(params.getColorParams().getFontSlideColor()));

1 个答案:

答案 0 :(得分:1)

您可以使用图表CategoryAxis上的默认边距来获得所需的效果,即不要按照演示更改它们。

CategoryAxis categoryaxis = categoryplot.getDomainAxis();
//categoryaxis.setLowerMargin(0.0D);
//categoryaxis.setUpperMargin(0.0D);
//categoryaxis.setCategoryMargin(0.0D);

image1

  

我需要堆积区域从第一个点开始 - 完全来自您图片中的C1,而不是更早,并且停在C8上,而不是更晚。

您可能需要调整值以更接近所需的结果。

categoryaxis.setLowerMargin(-0.075D);
categoryaxis.setUpperMargin(-0.075D);
categoryaxis.setCategoryMargin(0.0D);

image2