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