// Show training data on chart private void ShowTrainingData( ) { double[][,] dataSeries = new double[classesCount][, ]; int[] indexes = new int[classesCount]; // allocate data arrays for (int i = 0; i < classesCount; i++) { dataSeries[i] = new double[samplesPerClass[i], 2]; } // fill data arrays for (int i = 0; i < samples; i++) { // get sample's class int dataClass = classes[i]; // copy data into appropriate array dataSeries[dataClass][indexes[dataClass], 0] = data[i, 0]; dataSeries[dataClass][indexes[dataClass], 1] = data[i, 1]; indexes[dataClass]++; } // remove all previous data series from chart control chart.RemoveAllDataSeries( ); // add new data series for (int i = 0; i < classesCount; i++) { string className = string.Format("class" + i); // add data series chart.AddDataSeries(className, dataSereisColors[i], Chart.SeriesType.Dots, 5); chart.UpdateDataSeries(className, dataSeries[i]); // add classifier chart.AddDataSeries(string.Format("classifier" + i), Color.Gray, Chart.SeriesType.Line, 1, false); } }