Traçando várias linhas de regressão através de diferentes intercepções em Y e valores X

Estou tentando passar por uma linha de regressão linear através de grupos separados individuais de dados que compartilham a mesma inclinação. No entanto, embora eu tenha plotado com sucesso cores diferentes para os pontos em si e tenha representado graficamente aqueles com êxito, minha tentativa na linha não está funcionando.

Antes, tentei um hashset que mostrava os clusters por cores, mas que causava problemas na ordem em que as linhas chegavam.

Nesta tentativa, tentei vincular os clusters através de um anexo de número e, em seguida, ligar para as linhas com base nisso.

A primeira parte do código não é realmente relevante, pois não mudei nada lá e essa parte está funcionando conforme o esperado. Chama de outras classes, mas como o problema não existe, não acho que mostrar as outras classes seja relevante para o meu problema atual.

O segundo bloco do meu código é onde estou perdido. Por que parece que não está compilando? Nenhum erro é dado e é essencialmente apenas considerado um código fantasma como se minha instrução if não estivesse sendo atendida para inicializá-lo?

Abaixo está o primeiro bloco que pode não ser relevante. O segundo bloco de código é minha maior preocupação. Desculpe, eu sou novo nesses fóruns, não tenho total certeza dos procedimentos para fazer uma pergunta.

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) {

Na parte do código abaixo aqui, tentei criar uma linha para cada cluster por número no qual no Treeset deve simular novas linhas de inclinação para que ele seja executado. No entanto, por algum motivo, é como se o código não existisse. Nada está funcionando e estou curioso para saber se há algo a ver com a declaração de quebra que posso ter extraviado. Tentei movê-lo antes do índice ++ e depois dele e ambos retornaram os mesmos resultados.

                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");
        }
    }
}

Aqui está o gráficoResultado do gráfico

questionAnswers(1)

yourAnswerToTheQuestion