Trazar líneas de regresión múltiple a través de diferentes intersecciones en Y y valores X

Estoy intentando a través de una línea de regresión lineal a través de grupos individuales de datos separados que comparten la misma pendiente. Sin embargo, aunque he trazado con éxito diferentes colores para los puntos en sí y los graficaba con éxito, mi intento en la línea no funciona.

Anteriormente probé un hashset que funcionaba llamando a los grupos por colores pero que causaba problemas con el orden en el que aparecían las líneas.

En este intento, traté de vincular los grupos a través de un número adjunto y luego llamar a las líneas en función de eso.

La primera parte del código no es realmente relevante ya que no cambié nada allí y esa parte está funcionando según lo previsto. Llama desde otras clases, pero como el problema no está allí, no creo que mostrar las otras clases sea relevante para mi problema actual.

El segundo bloque de mi código es donde estoy perdido. ¿Por qué parece que no se está compilando? No se da ningún error y se considera esencialmente un código fantasma, como si mi declaración if no se cumple ni siquiera para inicializarlo.

A continuación se muestra el primer bloque que puede no ser relevante. El segundo bloque de código es mi mayor preocupación. Lo siento, soy nuevo en estos foros, no estoy completamente seguro de los procedimientos para formular una pregunta.

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

En la parte del código a continuación aquí, intenté crear una línea para cada grupo por número en el que en el conjunto de árboles debería simular nuevas líneas de pendiente para que se ejecute. Sin embargo, por alguna razón, es como si el código no existiera. ¿No se está ejecutando nada y tengo curiosidad si tiene algo que ver con la declaración de ruptura que podría haber perdido? Intenté moverlo antes del índice ++ y después, y ambos arrojaron los mismos 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");
        }
    }
}

Aquí está el gráficoResultado gráfico

Respuestas a la pregunta(1)

Su respuesta a la pregunta