代码之家  ›  专栏  ›  技术社区  ›  simgineer

在jFreeChart直方图中配置两个范围轴

  •  1
  • simgineer  · 技术社区  · 6 年前

    在jFreeChart直方图中有两个序列。一个通常比另一个小,我们想缩放更小的,所以它类似于更大的系列,我想验证是否可以用jFreeChart的常用API和两个单独的范围轴来实现这一点,可能一个在右边,另一个在左边。

    enter image description here

    1 回复  |  直到 6 年前
        1
  •  1
  •   simgineer    6 年前

    官方的例子很有帮助。这是我的解决方案基于他们非常感谢垃圾神的建议。

    enter image description here

    public void generateChart(List<FmsData> data, Valve valve) {
    
        HistogramDataset aggDs = createAggDataset(data);
        chart = createChart(aggDs, valve.getNumber());
    
        HistogramDataset valveDs = createValveDataset(data,valve.getNumber());
        XYPlot plot = chart.getXYPlot();
    
        // configure the second dataset
        plot.setDataset(0, aggDs);
        plot.setDataset(1, valveDs);
        plot.setRangeAxisLocation(0, AxisLocation.BOTTOM_OR_LEFT);
        plot.setRangeAxisLocation(1, AxisLocation.BOTTOM_OR_RIGHT);
        plot.mapDatasetToRangeAxis(0, 0);
        plot.mapDatasetToRangeAxis(1, 1);
    
        NumberAxis valveRangeAxis = new NumberAxis();
        plot.setRangeAxis(1, valveRangeAxis);
    
        XYBarRenderer renderer2 = new XYBarRenderer();
        plot.setRenderer(1, renderer2);
        plot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);
        renderer2.setDrawBarOutline(false);
        // flat bars look best...
        renderer2.setBarPainter(new StandardXYBarPainter());
        renderer2.setShadowVisible(false);
        // end config second dataset