Построение нескольких линий регрессии через различные Y-перехватчики и X-значения

Я пытаюсь через линию линейной регрессии через отдельные отдельные кластеры данных, которые имеют один и тот же наклон. Однако, хотя я успешно нарисовал различные цвета для самих точек и успешно их прорисовал, моя попытка линии не работает.

Ранее я пробовал хэш-набор, который выполнялся при вызове кластеров по цветам, но это вызывало проблемы с порядком, в котором появились строки.

В этой попытке я попытался связать кластеры через присоединение номера, а затем вызывать линии, основываясь на этом.

Первая часть кода на самом деле не актуальна, поскольку я там ничего не менял, и эта часть работает так, как задумано. Он вызывается из других классов, но поскольку проблема не существует, я не думаю, что показ других классов будет иметь отношение к моей текущей проблеме.

Второй блок моего кода, где я потерялся. Почему кажется, что он не компилируется? Никакой ошибки не дается, и это, по сути, просто считается фантомным кодом, как будто мой оператор if не выполняется даже для его инициализации?

Ниже приведен первый блок, который может быть не актуален. Второй блок кода - моя большая проблема. Извините, я новичок в этих форумах, я не совсем уверен в процедурах постановки вопроса.

package clusters;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Paint;
import java.awt.geom.Rectangle2D;
import java.io.IOException;
import java.util.HashSet;
import java.util.TreeSet;

import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CrosshairState;
import org.jfree.chart.plot.FastScatterPlot;
import org.jfree.chart.plot.PlotRenderingInfo;
import org.jfree.ui.RectangleEdge;

public class ExtendedFastScatterPlot extends FastScatterPlot {

    /**
    *
    */
    private static final long serialVersionUID = 1L;

    int[] sizes;
    Paint[] colors;
    int[] shapes;

    public ExtendedFastScatterPlot(float[][] data, NumberAxis domainAxis, NumberAxis rangeAxis, int[] sizes,
            Paint[] colors, int[] shapes) {
        super(data, domainAxis, rangeAxis);
        this.sizes = sizes;
        this.colors = colors;
        this.shapes = shapes;
    }

    @Override
    public void render(Graphics2D g2, Rectangle2D dataArea, PlotRenderingInfo info, CrosshairState crosshairState) {
        // g2.setPaint(Color.BLUE);

        if (this.getData() != null) {
            for (int i = 0; i < this.getData()[0].length; i++) {
                float x = this.getData()[0][i];
                float y = this.getData()[1][i];
                int size = this.sizes[i];
                int transX = (int) this.getDomainAxis().valueToJava2D(x, dataArea, RectangleEdge.BOTTOM);
                int transY = (int) this.getRangeAxis().valueToJava2D(y, dataArea, RectangleEdge.LEFT);
                g2.setPaint(this.colors[i]);
                if (1 == this.shapes[i]) {
                    g2.fillRect(transX, transY, size, size);
                } else {
                    g2.fillOval(transX, transY, size, size);
                }
            }
        }
        g2.setColor(java.awt.Color.red);

        try {
            double[] lineData = GaussianElimination.calcLines();

            /*HashSet<Paint> paints = new HashSet<Paint>();
            for (Paint p : colors) {
                paints.add(p);
            }*/

            for (int index = 1; index < lineData.length; index++) {
            double slope = lineData[0];

            //for (Paint p : paints) {

В приведенной ниже части кода я попытался создать линию для каждого кластера по номеру, в котором в Treeset следует смоделировать новые линии наклона, через которые он будет проходить. Однако, по какой-то причине, это как если бы код не существовал. Ничего не работает, и мне любопытно, имеет ли это какое-то отношение к оператору break, который я, возможно, потерял? Я пытался переместить его до индекса ++ и после него, и оба возвращали одинаковые результаты.

                for (int i = 0; i < this.getData()[0].length; i++) {

                    TreeSet<Double> xCoords = new TreeSet<Double>();
                    //if (colors[i].equals(p)) {
                        xCoords.add((double) this.getData()[0][i]);
                    //}
                //}
                double xleft = xCoords.first();
                double xright = xCoords.last();

                double yleft = slope * xleft + lineData[index];
                double yright = slope * xright + lineData[index];


                int txstart = (int) this.getDomainAxis().valueToJava2D(xleft, dataArea, RectangleEdge.BOTTOM);
                int tystart = (int) this.getRangeAxis().valueToJava2D(yleft, dataArea, RectangleEdge.LEFT);

                int txend = (int) this.getDomainAxis().valueToJava2D(xright, dataArea, RectangleEdge.BOTTOM);
                int tyend = (int) this.getRangeAxis().valueToJava2D(yright, dataArea, RectangleEdge.LEFT);

                g2.setPaint(Color.getHSBColor(i/(lineData.length - 1), 1, 1 ));
                g2.drawLine(txstart, tystart, txend, tyend);

                //index++;
                //if (index >= lineData.length) break;
                }   
            }**

        } catch (IOException e) {
            System.out.println("Unable to open data files");
        }
    }
}

Вот графикГрафик Результат

Ответы на вопрос(1)

Ваш ответ на вопрос