예제 #1
0
    // Plotta punkter
    private void PlotPoints(List <float> xPoints, List <float> yPoints, int xOffset, int yOffset)
    {
        float minX = FindMin(xPoints);      //Hitta min/max i x och y mängderna  för att kunna normalisera.
        float minY = FindMin(yPoints);
        float maxX = FindMax(xPoints);
        float maxY = FindMax(yPoints);

        for (var i = 0; xPoints != null && i < xPoints.Count; i++)
        {
            float NormalizedX = (Convert.ToSingle(xPoints[i]) - minX) / (maxX - minX);  //Normalisera
            float NormalizedY = (Convert.ToSingle(yPoints[i]) - minY) / (maxY - minY);

            if (Dataset.NewDataPoints.Count > 0 && i == xPoints.Count - 1)
            {
                GameObject newPoint = Instantiate(NewPoint, new Vector3(NormalizedX + xOffset, NormalizedY + yOffset, 0f) * scaleOfMatrix, Quaternion.identity);
                newPoint.transform.SetParent(DataPointHolder.transform);
                newPoint.transform.localScale = new Vector3(0.6f, 0.6f, 0.6f);
                newPoint.GetComponent <Renderer>().material.color = graphColors.Evaluate((Convert.ToSingle(Dataset.NewDataPoints[0]
                                                                                                           [Dataset.NewDataPoints[0].Keys.ElementAt(Dataset.NewDataPoints[0].Keys.Count - 1)])));

                for (int r = 0; r < Dataset.K; r++)
                {
                    knnPoints.Add(new KeyValuePair <int, GameObject>(Knn.info[r].idx, allPoints[Knn.info[r].idx]));
                }
            }
            else
            {
                GameObject point = Instantiate(DataPoint, new Vector3(NormalizedX + xOffset, NormalizedY + yOffset, 0f) * scaleOfMatrix, Quaternion.identity); //Skapa en instans för datapunkt
                point.transform.localScale = new Vector3(0.4f, 0.4f, 0.4f);
                point.transform.SetParent(DataPointHolder.transform);                                                                                          // Assigna  till föräldern för  att hålla datapunkter
                point.GetComponent <Renderer>().material.color = graphColors.Evaluate(Convert.ToSingle(targets.ElementAt(i)));                                 // Instansiera punkten  med en färg TODO: Färg för kategori?
                allPoints.Add(point);
            }
        }
    }
예제 #2
0
    public void ShowGraph(List <string> attributes = null)
    {
        if (attributes is null)
        {
            attributes = this.attributes;
        }
        else
        {
            this.attributes = attributes;
        }

        instances.Clear();
        Dictionary <string, Dictionary <string, float> > minMax = Dataset.GetMinMax(attributes);
        IEnumerable <object> targets = Dataset.GetDataSetTargets();
        int numberOfTargets          = Dataset.GetNumberOfTargets(targets);

        Color color;

        graphColors.SetMinMax();

        DrawAxes(attributes, minMax);

        for (var i = 0; i < (Dataset.ListOfPoints.Count); i++)
        {
            color = graphColors.Evaluate(Convert.ToSingle(targets.ElementAt(i)));
            ShowOneInstance(Dataset.ListOfPoints, attributes, minMax, color, CreateDot, i);
        }

        thingsContainer.SetAsLastSibling();

        if (Dataset.NewDataPoints.Count > 0)
        {
            color = graphColors.Evaluate(Convert.ToSingle(Dataset.NewDataPoints[0]
                                                          [Dataset.NewDataPoints[0].Keys.ElementAt(Dataset.NewDataPoints[0].Keys.Count - 1)]));

            ShowOneInstance(Dataset.NewDataPoints, attributes, minMax, color, CreateNewDot, 0);
            blinkingInstances = new List <GameObject>();

            for (int i = 0; i < Dataset.K; i++)
            {
                Debug.Log(Dataset.NewDataPoints[0][Dataset.NewDataPoints[0].Keys.ElementAt(Dataset.NewDataPoints[0].Keys.Count - 1)]);
                blinkingInstances.Add(instances[Knn.info[i].idx]);
            }
            foreach (GameObject blinkingInstance in blinkingInstances)
            {
                blinkingInstance.GetComponent <LineRenderer>().sortingOrder = 1;
                foreach (GameObject dot in blinkingInstance.GetComponent <InstanceController>().instanceDots)
                {
                    dot.GetComponent <SortingGroup>().sortingOrder = 2;
                }
            }
            InvokeRepeating("InstanceBlink", 1f, 1f);
        }
    }
    private void InstantiateDataPoint(string xName, string yName, string zName)
    {
        for (var i = 0; i < Dataset.ListOfPoints.Count; i++)
        {
            float x = Convert.ToSingle(Dataset.ListOfPoints[i][xName]);
            float y = Convert.ToSingle(Dataset.ListOfPoints[i][yName]);
            float z = Convert.ToSingle(Dataset.ListOfPoints[i][zName]);

            GameObject point = Instantiate(DataPoint, new Vector3(x, y, z), Quaternion.identity);
            point.GetComponent <Renderer>().material.color = graphColors.Evaluate(Convert.ToSingle(targets.ElementAt(i)));
            //point.GetComponent<Renderer>().material.color = SetColor.GetColor(Convert.ToSingle(targets.ElementAt(i)));
            allPoints.Add(point);
        }
    }
    public static Color GetColor(double target)
    {
        //double normalizedValue = Normalize(target);
        return(graphColors.Evaluate((float)target));

        //return new Color((float)normalizedValue, 0, 0);
    }