1

我正在尝试使用 JFreeChart 库制作正态分布图。如果我尝试在图表下方找到一个区域,我就成功了。但是我没有找到如何在图表下获得 2 个区域的方法。

这是一侧的代码:

public GrafHujungKanan() {

        Function2D normal = new NormalDistributionFunction2D(0.0, 1.0);
        dataset = DatasetUtilities.sampleFunction2D(normal, -4, 4, 100,
                "Normal");

        XYSeries fLine = new XYSeries("fLine");
        fLine.add(nilaiKritikal, 0);
        fLine.add(4, 0);
        ((XYSeriesCollection) dataset).addSeries(fLine);

        NumberAxis xAxis = new NumberAxis(null);
        NumberAxis yAxis = new NumberAxis(null);
        XYDifferenceRenderer renderer = new XYDifferenceRenderer();
        xAxis.setRange(0, 5);
        plot = new XYPlot(dataset, xAxis, yAxis, renderer);

        chart = new JFreeChart(plot);
        chart.removeLegend();

        ChartPanel cp = new ChartPanel(chart);
        this.add(cp);
    }

这是上面代码的样子

这是上面代码的样子

这就是我需要它的样子:

在此处输入图像描述

我已经尝试过用正负翻转值。但是,图表的线变成了绿色。

这是我尝试过的

public GrafDuaHujung() {

    Function2D normal = new NormalDistributionFunction2D(0.0, 1.0);
    dataset = DatasetUtilities.sampleFunction2D(normal, -4, 4, 100,
            "Normal");

    // line on right side
    XYSeries fLine = new XYSeries("fLine");
    fLine.add(2, 0);
    fLine.add(4, 0);
    ((XYSeriesCollection) dataset).addSeries(fLine);

    // line on left side
    XYSeries dLine = new XYSeries("dLine");
    dLine.add(-2, 0);
    dLine.add(-4, 0);
    ((XYSeriesCollection) dataset).addSeries(dLine);

    NumberAxis xAxis = new NumberAxis(null);
    NumberAxis yAxis = new NumberAxis(null);
    XYDifferenceRenderer renderer = new XYDifferenceRenderer();
    xAxis.setRange(0, 5);
    plot = new XYPlot(dataset, xAxis, yAxis, renderer);

    chart = new JFreeChart(plot);
    chart.removeLegend();

    ChartPanel cp = new ChartPanel(chart);
    this.add(cp);
}

谢谢您的回答。

4

1 回答 1

0

您可以使用多个数据集。

public GrafDuaHujung() {

     Function2D normal = new NormalDistributionFunction2D(0.0, 1.0);
     dataset = DatasetUtilities.sampleFunction2D(normal, -4, 4, 100, "Normal");
     dataset2 = DatasetUtilities.sampleFunction2D(normal, -4, 4, 100, "Normal"); //New

     // line on right side
     XYSeries fLine = new XYSeries("fLine");
     fLine.add(2, 0);
     fLine.add(4, 0);
     ((XYSeriesCollection) dataset).addSeries(fLine);

     // line on left side
     XYSeries dLine = new XYSeries("dLine");
     dLine.add(-2, 0);
     dLine.add(-4, 0);
     ((XYSeriesCollection) dataset2).addSeries(dLine); //Changed

     XYDifferenceRenderer renderer = new XYDifferenceRenderer();
     plot = new XYPlot(); //New
     plot.setDataset(0, dataset); //New
     plot.setDataset(1, dataset2); //New
     plot.setRenderer(renderer); //New

     chart = new JFreeChart(plot);
     chart.removeLegend();

     ChartPanel cp = new ChartPanel(chart);
     this.add(cp);
}
于 2016-11-01T11:44:25.323 回答