//Lineplot public DxChartBatch(DxLineplotSettings mysettings, DataTable dt, string title) { Initialize(); _batchsettings = (DxChartSettings)mysettings; outputtype = DxOutputtype.Lineplot; layout = mysettings.chartlayout; _vars = mysettings.numvars; if (mysettings.agevars != null) { _vars.AddRange(mysettings.agevars); } if (mysettings.xaxisvar == "variable") //This is just one plot { DxChart chart = new DxLineplot(mysettings, dt); chart.AddTitles(title); charts.Add(chart); } else { //Check to see if "variable" is used in color, if not then loop through all the numvars and create a plot for each if (mysettings.colorvar != "variable" & mysettings.panelvar != "variable") { foreach (string v in _vars) { if (mysettings.xaxisvar != v) //If y is not the same as x, then continue { mysettings.yaxisvar = v; mysettings.seriesby = "id"; DxChart chart = new DxLineplot(mysettings, dt); chart.AddTitles(String.Format("{0} {1}", v, title)); charts.Add(chart); } } } // if variable is used as a color else { DxChart chart = new DxLineplot(mysettings, dt); chart.AddTitles(title); charts.Add(chart); } } }
public DxLineplot(DxLineplotSettings settings, DataTable mydt) //, string xvar, string yvar, string titleinput, string colorsby) { _settings = settings; Color col = _settings.color(0); _markers = new DxMarkerKinds(); //Need to stack the data because variable is within the plot if ((_settings.xaxisvar == "variable" || _settings.colorvar == "variable") & _settings.xaxisvar != _settings.colorvar) { List <string> idvars = new List <string>() { "id" }; if (_settings.xaxisvar != "none" & _settings.xaxisvar != "variable" & !idvars.Contains(_settings.xaxisvar)) { idvars.Add(_settings.xaxisvar); } if (_settings.colorvar != "none" & _settings.colorvar != "variable" & !idvars.Contains(_settings.colorvar)) { idvars.Add(_settings.colorvar); } if (_settings.panelvar != "none" & _settings.panelvar != "variable" & !idvars.Contains(_settings.panelvar)) { idvars.Add(_settings.panelvar); } DataTable dt_stacked = DataTableExtensions.StackData(mydt, idvars, _settings.numvars); _settings.seriesby = "id"; //_settings.xaxisvar = "variable"; _settings.yaxisvar = "value"; CreateLineplot(dt_stacked); } else { CreateLineplot(mydt); } }
public DxActogram(DxLineplotSettings settings, DataTable dt, Actigraph.ActogramStats mystats) : base((DxLineplotSettings)settings, dt) { _settings = (DxActogramSettings)settings; _stats = mystats; _markers = new DxMarkerKinds(); }
public void ProcessOrder(DxChartOrder order) { if (order.isOrderFilled) //Already have batches { order.batches.Clear(); } //Skip the_dpdata stuff if _dt is already populated if (_dt == null) { bool hassameworksheet = order.HasSameWorksheet(_dpdata); if (!hassameworksheet) { //Need new DPData _dataproject.selectedsheet = order.worksheet; _dpdata = new DPData(_dataproject, order.filter); } bool hassamefilter = order.HasSameFilter(_dpdata); if (!hassamefilter) { _dpdata.filter = order.filter; } _dt = _dpdata.dt; } //Each order will result in a list of batches //List<DxBatchOcharts> batchlist = new List<DxBatchOcharts>(); List <DxChartBatch> batchlist = new List <DxChartBatch>(); if (order.list_settings != null) { foreach (DxChartSettings settings in order.list_settings) { #region Histogram if (settings.outputtype == DxOutputtype.Histogram) { DxHistogramSettings mysettings = (DxHistogramSettings)settings; DxChartBatch batch = new DxChartBatch(mysettings, dt); PrepareBatch(batch, settings); batchlist.Add(batch); } #endregion #region Barchart else if (settings.outputtype == DxOutputtype.Barchart) { DxBarchartSettings mysettings = (DxBarchartSettings)settings; DxChartBatch batch = new DxChartBatch(mysettings, dt); PrepareBatch(batch, settings); batchlist.Add(batch); } #endregion #region Scatterplot else if (settings.outputtype == DxOutputtype.Scatterplot) { DxScatterplotSettings mysettings = (DxScatterplotSettings)settings; if (mysettings.repeatedmeasVarname == "none") { //DxChartBatch batch = new DxChartBatch(mysettings, dt); //PrepareBatch(batch, settings); //batchlist.Add(batch); foreach (XYpairType mode in mysettings.xypairtypes) { if (mode == XYpairType.AllVars_IgnoreLevelsOfRptMeas) { mysettings.current_xypairtype = mode; //mysettings.maxCol = ncol1; //mysettings.maxRow = tmpvars.Count; mysettings.chartlayout = DxLayout.Horizontal; mysettings.repeatedmeasVarname = "none"; DxChartBatch batch1 = new DxChartBatch(mysettings, dt); PrepareBatch(batch1, (DxChartSettings)mysettings); batch1.batchtitle = String.Format("All variables (IGNORE Time/RptMeas)"); batch1.maxCol = batch1.charts.Count; batchlist.Add(batch1); } } } else if (mysettings.repeatedmeasVarname != "none") { List <string> repeatedmeas_levels = dt.AsEnumerable().Select(f => f.Field <string>(mysettings.repeatedmeasVarname)).Distinct().ToList(); List <string> analysisvars = new List <string>(); analysisvars.AddRange(mysettings.numvars); if (mysettings.agevars != null) { analysisvars.AddRange(mysettings.agevars); } int n_rptmeas = repeatedmeas_levels.Count; int n_analysisvars = analysisvars.Count; int ncol1 = utilStats.TriangleNumber(n_rptmeas); List <string> tmpvars = mysettings.analysisvars(); List <string> tmpvarsX = mysettings.analysisvarsX(); List <string> tmpvarsY = mysettings.analysisvarsY(); #region Process By Mode foreach (XYpairType mode in mysettings.xypairtypes) { if (mode == XYpairType.AllVars_IgnoreLevelsOfRptMeas) { mysettings.current_xypairtype = mode; //mysettings.maxCol = ncol1; //mysettings.maxRow = tmpvars.Count; mysettings.chartlayout = DxLayout.Horizontal; mysettings.repeatedmeasVarname = "none"; DxChartBatch batch1 = new DxChartBatch(mysettings, dt); PrepareBatch(batch1, (DxChartSettings)mysettings); batch1.batchtitle = String.Format("All variables (IGNORE Time/RptMeas)"); batch1.maxCol = batch1.charts.Count; batchlist.Add(batch1); } if (mode == XYpairType.SameVar_AcrossLevelsOfRptMeas) { mysettings.current_xypairtype = mode; mysettings.maxCol = ncol1; //mysettings.maxRow = tmpvars.Count; mysettings.chartlayout = DxLayout.Horizontal; //Loop over vars, make a batch for each one foreach (string v in tmpvars) { mysettings.manualXandYvars = true; mysettings.xvars = new List <string> { v }; mysettings.yvars = new List <string> { v }; DxChartBatch batch1 = new DxChartBatch(mysettings, dt); PrepareBatch(batch1, (DxChartSettings)mysettings); batch1.batchtitle = String.Format("{0} ACROSS levels of {1}", v, mysettings.repeatedmeasVarname); batch1.maxCol = batch1.charts.Count; batchlist.Add(batch1); } } if (mode == XYpairType.DiffVar_WithinLevelsOfRptMeas) { //#2 - treat it as square mysettings.current_xypairtype = mode; //mysettings.numvars = tmpvars; mysettings.xvars = null; mysettings.yvars = null; mysettings.chartlayout = DxLayout.Upper; mysettings.maxRow = tmpvars.Count; List <string> rptmeasLevels = dt.AsEnumerable().Select(f => f.Field <string>(mysettings.repeatedmeasVarname)).Distinct().ToList(); List <string> tmpvars_with_id = new List <string>(); tmpvars_with_id.AddRange(tmpvars); tmpvars_with_id.Add("id"); DataSubsets dt_rptmeas = new DataSubsets(dt, tmpvars_with_id, mysettings.repeatedmeasVarname); //Loop across levels of the RptMeas foreach (DataSubset subset in dt_rptmeas.subsets) { DxChartBatch batch2 = new DxChartBatch(mysettings, subset.dt); PrepareBatch(batch2, (DxChartSettings)mysettings); batch2.batchtitle = String.Format("Variables WITHIN {0}: {1}", mysettings.repeatedmeasVarname, subset.Vals_ToString()); batch2.maxCol = batch2.charts.Count; batchlist.Add(batch2); } } if (mode == XYpairType.DiffVar_AcrossLevelsOfRptMeas) { //#2 - back to original mysettings.current_xypairtype = mode; //mysettings.numvars = tmpvars; mysettings.xvars = tmpvarsX; mysettings.yvars = tmpvarsY; mysettings.manualXandYvars = true; mysettings.chartlayout = DxLayout.Horizontal; List <string> rptmeasLevels = dt.AsEnumerable().Select(f => f.Field <string>(mysettings.repeatedmeasVarname)) .Distinct().ToList(); //HERE!!!! for (int i = 0; i < (rptmeasLevels.Count - 1); i++) { for (int j = i + 1; j < rptmeasLevels.Count; j++) { DataView dv = new DataView(dt); // dt.AsDataView(); dv.RowFilter = String.Format("{0} IN ('{1}','{2}')", mysettings.repeatedmeasVarname, rptmeasLevels[i], rptmeasLevels[j]); DataTable dt_sub = dv.ToTable(); if (dt_sub.Rows.Count > 1) { DxChartBatch batch3 = new DxChartBatch(mysettings, dt_sub); PrepareBatch(batch3, (DxChartSettings)mysettings); batch3.batchtitle = String.Format("Variables ACROSS {0}:{1} & {2}", mysettings.repeatedmeasVarname, rptmeasLevels[i], rptmeasLevels[j]); batch3.maxCol = batch3.charts.Count; batchlist.Add(batch3); } } } } } } #endregion } #endregion #region Actogram else if (settings.outputtype == DxOutputtype.Actogram) { DxActogramSettings mysettings = (DxActogramSettings)settings; mysettings.outputtype = DxOutputtype.Actogram; List <string> varnames = new List <string>() { "id" }; varnames.AddRange(mysettings.numvars); varnames.Add(mysettings.xaxisvar); varnames.Add(mysettings.colorvar); varnames.RemoveAll(item => item == "variable"); varnames.RemoveAll(item => item == "none"); DataSubsets subsets = new DataSubsets(dt, varnames, new List <string> { mysettings.panelvar }); DxChartBatch batch2 = new DxChartBatch(DxOutputtype.Actogram, mysettings); foreach (DataSubset subset in subsets.subsets) { mysettings.date_txt = subset.dt.AsEnumerable().Min(f => f.Field <string>("report_date")); DxChartBatch subbatch = new DxChartBatch(mysettings, subset.dt, subset.Cols_and_Vals_ToString()); foreach (DxChart sub in subbatch.charts) { batch2.charts.Add(sub); } } PrepareBatch(batch2, mysettings); batchlist.Add(batch2); } #endregion #region Lineplot else if (settings.outputtype == DxOutputtype.Lineplot) { DxLineplotSettings mysettings = (DxLineplotSettings)settings; //NO Panels if (mysettings.panelvar == "none" | mysettings.panelvar == "variable") { DxChartBatch batch1 = new DxChartBatch(mysettings, dt, " "); PrepareBatch(batch1, settings); batchlist.Add(batch1); } else { List <string> varnames = new List <string>() { "id" }; varnames.AddRange(mysettings.numvars); varnames.Add(mysettings.xaxisvar); varnames.Add(mysettings.colorvar); varnames.RemoveAll(item => item == "variable"); varnames.RemoveAll(item => item == "none"); DataSubsets subsets = new DataSubsets(dt, varnames, new List <string> { mysettings.panelvar }); DxChartBatch batch2 = new DxChartBatch(DxOutputtype.Lineplot, mysettings); batch2.vars = mysettings.numvars; foreach (DataSubset subset in subsets.subsets) { DxChartBatch subbatch = new DxChartBatch(mysettings, subset.dt, subset.Cols_and_Vals_ToString()); foreach (DxChart sub in subbatch.charts) { batch2.charts.Add(sub); } } PrepareBatch(batch2, mysettings); batchlist.Add(batch2); } } #endregion } } order.batches.AddRange(batchlist); //The invoice serves as a table of contents for what was actually created order.PrepareInvoice(); }