protected override DataFrameBuilder AddColumns(DataFrameBuilder dataFrameBuilder) { dataFrameBuilder = AddColumnForAxis(dataFrameBuilder, dataFrameBuilder.BaseAxis); var points = dataFrameBuilder.Points; var apexes = new double?[points.Count]; var starts = new double?[points.Count]; var fwhms = new double?[points.Count]; for (int i = 0; i < points.Count; i++) { var point = points[i]; if (point.IsMissing) { continue; } starts[i] = point.Z; var middleErrorTag = point.Tag as MiddleErrorTag; if (middleErrorTag != null) { apexes[i] = middleErrorTag.Middle; fwhms[i] = middleErrorTag.Error; } } var dataFrame = new DataFrame(dataFrameBuilder.ValueAxis.Title.Text, dataFrameBuilder.Points.Count); dataFrame = dataFrame.AddColumn(new DataColumn<double?>("Apex", apexes)); // Not L10N dataFrame = dataFrame.AddColumn(new DataColumn<double?>("Start", starts)); // Not L10N dataFrame = dataFrame.AddColumn(GetColumnForAxis(dataFrameBuilder, dataFrameBuilder.ValueAxis).SetTitle("End")); // Not L10N dataFrame = dataFrame.AddColumn(new DataColumn<double?>("FWHM", fwhms)); // Not L10N dataFrameBuilder = dataFrameBuilder.AddColumn(dataFrame); return dataFrameBuilder; }
protected override DataFrameBuilder AddColumns(DataFrameBuilder dataFrameBuilder) { dataFrameBuilder = AddColumnForAxis(dataFrameBuilder, dataFrameBuilder.BaseAxis); // Group the "High" and "Low" columns together, and put the title from the Axis on top of them var dataFrame = new DataFrame(dataFrameBuilder.ValueAxis.Title.Text, dataFrameBuilder.Points.Count); dataFrame = dataFrame.AddColumn(GetColumnForAxis(dataFrameBuilder, dataFrameBuilder.ValueAxis).SetTitle("High")); // Not L10N dataFrame = dataFrame.AddColumn(GetZAxisColumn(dataFrameBuilder.Points).SetTitle("Low")); // Not L10N dataFrameBuilder = dataFrameBuilder.SetDataFrame(dataFrameBuilder.DataFrame.AddColumn(dataFrame)); return dataFrameBuilder; }
protected override DataFrameBuilder AddColumns(DataFrameBuilder dataFrameBuilder) { dataFrameBuilder = AddColumnForAxis(dataFrameBuilder, dataFrameBuilder.BaseAxis); // Group the "High" and "Low" columns together, and put the title from the Axis on top of them var dataFrame = new DataFrame(dataFrameBuilder.ValueAxis.Title.Text, dataFrameBuilder.Points.Count); dataFrame = dataFrame.AddColumn(GetColumnForAxis(dataFrameBuilder, dataFrameBuilder.ValueAxis).SetTitle("High")); // Not L10N dataFrame = dataFrame.AddColumn(GetZAxisColumn(dataFrameBuilder.Points).SetTitle("Low")); // Not L10N dataFrameBuilder = dataFrameBuilder.SetDataFrame(dataFrameBuilder.DataFrame.AddColumn(dataFrame)); return(dataFrameBuilder); }
public static GraphPaneData GetGraphPaneData(GraphPane graphPane) { var dataFrames = new List <DataFrame>(); var rowHeaderToListIndex = new Dictionary <IColumnGroup, int>(); foreach (var curveItem in graphPane.CurveList) { var curveHandler = CurveDataHandlers.FindCurveHandler(curveItem); if (curveHandler == null) { continue; } var curveData = new DataFrameBuilder(graphPane, curveItem); curveData = curveHandler.FilterToZoomedRange(curveData); curveData = curveHandler.CreateDataFrame(curveData); var dataFrame = curveData.DataFrame; if (dataFrame == null) { continue; } var rowHeader = dataFrame.RowHeader; int existingIndex; if (rowHeader != null && rowHeaderToListIndex.TryGetValue(rowHeader, out existingIndex)) { DataFrame previousFrame = dataFrames[existingIndex]; DataFrame mergedFrame; if (null == previousFrame.Title) { mergedFrame = previousFrame.AddColumn(dataFrame.RemoveRowHeader()); } else { mergedFrame = new DataFrame(null, rowHeader) .AddColumn(previousFrame.RemoveRowHeader()) .AddColumn(dataFrame.RemoveRowHeader()); } dataFrames[existingIndex] = mergedFrame; } else { if (rowHeader != null) { rowHeaderToListIndex.Add(rowHeader, dataFrames.Count); } dataFrames.Add(dataFrame); } } if (dataFrames.Count == 0) { return(null); } return(new GraphPaneData(graphPane.Title.Text, dataFrames)); }