Пример #1
0
        //groups the top limitOfGroups groups, and compares them with the rest of the dataset.
        public List <List <DataSeries> > ConvertToOneVsAllDataSeries(string groupBy, string dim0, string dim1, int limitOfGroups)
        {
            //need to make sure these guys are linked

            var res    = new List <List <DataSeries> >();
            var schema = new DataFileSchema(this);

            schema.ColumnNames.ForEach(col => schema.ColumnNumericMap[col] = false);
            schema.ColumnNumericMap[dim0] = true;
            schema.ColumnNumericMap[dim1] = true;
            schema.GroupBy = groupBy;
            var groups  = ConvertToDataSeries(schema, limitOfGroups);
            var ordered = groups.OrderByDescending(g => g.Rows.Count).ToList();

            for (int i = 0; i < Math.Min(10, groups.Count); i++)
            {
                var temp = new List <DataSeries>();
                temp.Add(ordered[i]);
                DataSeries Others = new DataSeries(this, schema, ".Others");
                for (int j = 0; j < ordered.Count; j++)
                {
                    if (i != j)
                    {
                        ordered[j].Rows.ForEach(r => Others.AddRow(r));
                    }
                }
                Others.EndInit();
                temp.Add(Others);
                res.Add(temp);
            }
            return(res);
        }
Пример #2
0
        private void buttonSplatter_Click(object sender, EventArgs e)
        {
            var dialog = new AddTo1vsAllDialog();

            dialog.Text = "Show single splatterplot";
            if (listViewDataFiles.SelectedItems.Count > 0)
            {
                var item     = listViewDataFiles.SelectedItems[0];
                var dataFile = m_Files[item];
                dialog.SetDataFile(dataFile, true);
                var res = dialog.ShowDialog(this);
                if (res == System.Windows.Forms.DialogResult.OK)
                {
                    var schema = new DataFileSchema(dataFile);
                    schema.GroupBy = dialog.GroupBy;
                    var list = dataFile.ConvertToDataSeries(schema, -1);

                    SplatterModel model = new SplatterModel(list, dialog.HorizontalDim, dialog.VerticalDim, true);

                    var splatterDialog = new SingleSplatterDialog();
                    splatterDialog.Text = string.Format("Splatterplot ({0}): {1}", SplatterCount++, dataFile.Name);
                    splatterDialog.SetModel(model);
                    splatterDialog.Show();
                    splatterDialog.BringToFront();
                }
            }
        }
Пример #3
0
 public DataSeries(DataFile dataFile, DataFileSchema schema, string name)
 {
     m_DataFile  = dataFile;
     m_Schema    = schema;
     ColumnData  = new Dictionary <string, ColumnData>();
     ColumnNames = new List <string>();
     Name        = name;
 }
Пример #4
0
 public DataSeriesRow(DataFileSchema schema, DataRow row)
 {
     m_Row = row;
     foreach (var col in schema.ColumnNames.Where(c => schema.ColumnNumericMap[c]))
     {
         //m_Values[col] = (float)Math.Log(Convert.ToSingle(row.Field<string>(col)) + 1, 2);
         m_Values[col] = Convert.ToSingle(row.Field <string>(col));
     }
     Selected = false;
 }
Пример #5
0
        public List <DataSeries> ConvertToDataSeries(DataFileSchema schema, int limitOfGroups)
        {
            List <DataSeries> res = new List <DataSeries>();

            if (schema.GroupBy.Equals("None"))
            {
                DataSeries data = new DataSeries(this, schema, Name);
                foreach (var row in m_table.AsEnumerable())
                {
                    data.AddRow(new DataSeriesRow(schema, row));
                }
                data.EndInit();
                res.Add(data);
            }
            else
            {
                var query =
                    from row in m_table.AsEnumerable()
                    group row by row[schema.GroupBy] into set
                    orderby set.Count() descending
                    select set;

                int        max   = limitOfGroups > 0 ? limitOfGroups : int.MaxValue;
                int        index = 0;
                DataSeries rest  = new DataSeries(this, schema, ".Rest");
                foreach (var group in query)
                {
                    if (index < max)
                    {
                        DataSeries data = new DataSeries(this, schema, group.Key.ToString());
                        foreach (var row in group)
                        {
                            data.AddRow(new DataSeriesRow(schema, row));
                        }
                        data.EndInit();
                        res.Add(data);
                    }
                    else
                    {
                        foreach (var row in group)
                        {
                            rest.AddRow(new DataSeriesRow(schema, row));
                        }
                    }
                    index++;
                }
                if (rest.Rows.Count > 0)
                {
                    rest.EndInit();
                    res.Add(rest);
                }
            }
            return(res);
        }
Пример #6
0
 public void SetDataFile(DataFile dataFile)
 {
     m_Schema = new DataFileSchema(dataFile);
     comboBox1.SelectedIndex = 0;
     foreach (var name in m_Schema.ColumnNames)
     {
         AddDialogRow row = new AddDialogRow();
         m_Rows.Add(row);
         row.SetColumnData(name, m_Schema.ColumnNumericMap[name]);
         flowLayoutPanel1.Controls.Add(row);
         comboBox1.Items.Add(name);
     }
     if (m_Rows.Count > 15)
     {
         m_Rows.ForEach(r => r.SetToIgnore());
     }
 }
Пример #7
0
        public void AddRowRange(IEnumerable <DataRow> rows, DataFileSchema schema)
        {
            var list = rows.Select(r => new DataSeriesRow(schema, r));

            m_Rows.AddRange(list);
        }