Beispiel #1
0
        private void PopulateCompareStatsSheetThenPlotXY(StatsDATField xval, StatsDATField yval, string sheetName, AxisType xAxis = AxisType.Linear, AxisType yAxis = AxisType.Linear)
        {
            //create worksheet
            activeSheet = originApp.FindWorksheet(sheetName);
            if (activeSheet == null)
            {
                sheetName = (String)originApp.CreatePage((int)Origin.PAGETYPES.OPT_WORKSHEET, sheetName, "Origin", 2);
            }
            activeSheet = (Worksheet)originApp.WorksheetPages[sheetName].Layers[0];
            //count columns to create from # of scans
            int colsCounter = 0;

            foreach (Device d in dbvm.TheDeviceBatch.Devices)
            {
                foreach (DeviceLJVScanSummary ss in d.DeviceLJVScanSummaries)
                {
                    if (ss.TestCondition == activeTestCondition)
                    {
                        foreach (LJVScan scan in ss.LJVScans)
                        {
                            colsCounter++;
                        }
                    }
                }
            }
            activeSheet.Cols = colsCounter * 3;//xval (mean),yval(mean),yerror (no xerror because messy)
            colsCounter      = 0;
            //create graph layer
            String strGrName = string.Concat("graph_", sheetName);

            activeGraphLayer1 = originApp.FindGraphLayer(strGrName);
            if (activeGraphLayer1 == null)
            {
                strGrName = (String)originApp.CreatePage((int)Origin.PAGETYPES.OPT_GRAPH, strGrName, "Scatter", 2);
            }
            activeGraphLayer1 = (GraphLayer)originApp.GraphPages[strGrName].Layers[0];
            String strPlotName = string.Concat(strGrName, "_line");

            activeDataPlot   = activeGraphLayer1.DataPlots[strPlotName];
            colorCounter     = 0;
            lineStyleCounter = 0;
            if (activeSheet.Cols > 0)
            {
                //populate columns with data then add DataPlots to GraphLayer
                foreach (Device d in dbvm.TheDeviceBatch.Devices)
                {
                    Debug.WriteLine("Plotting " + sheetName + " for " + d.Label);
                    foreach (DeviceLJVScanSummary ss in d.DeviceLJVScanSummaries)
                    {
                        if (ss.TestCondition == activeTestCondition)
                        {
                            lineStyleCounter = 0;
                            LJVScanSummaryVM vm = new LJVScanSummaryVM(ss);
                            var array           = vm.StatsDatArray();
                            activeSheet.Columns[colsCounter].LongName = StatsDATLongNames[xval];
                            activeSheet.Columns[colsCounter].Type     = COLTYPES.COLTYPE_X;
                            activeSheet.Columns[colsCounter].Units    = StatsDATUnits[xval];
                            activeSheet.SetData(array.GetCol((int)xval), 0, colsCounter);
                            activeSheet.Columns[colsCounter + 1].LongName = StatsDATLongNames[yval];
                            activeSheet.Columns[colsCounter + 1].Type     = COLTYPES.COLTYPE_Y;
                            activeSheet.Columns[colsCounter + 1].Units    = StatsDATUnits[yval];
                            activeSheet.Columns[colsCounter + 1].Comments = d.Label;
                            activeSheet.SetData(array.GetCol((int)yval), 0, colsCounter + 1);
                            activeSheet.Columns[colsCounter + 2].Type = COLTYPES.COLTYPE_ERROR;//set y error stuff
                            activeSheet.SetData(array.GetCol((int)yval + 1), 0, colsCounter + 2);
                            DataRange dr = activeSheet.NewDataRange();
                            dr.Add("X", activeSheet, 0, colsCounter, -1, colsCounter);          //add data for X column
                            dr.Add("Y", activeSheet, 0, colsCounter + 1, -1, colsCounter + 1);
                            dr.Add("ED", activeSheet, 0, colsCounter + 2, -1, colsCounter + 2); //ED==origin name for Yerror type XDDDD
                            activeDataPlot = activeGraphLayer1.DataPlots.Add(dr, PLOTTYPES.IDM_PLOT_LINE);
                            activeGraphLayer1.Execute(string.Concat("set ", activeDataPlot.Name, " -c color(", plotColors[colorCounter], ")"));
                            activeGraphLayer1.Execute(string.Concat("set ", activeDataPlot.Name, " -d ", lineStyleCounter));
                            colsCounter += 3;
                            lineStyleCounter++;
                        }
                    }
                    colorCounter++;//do this to use same line color for each device
                }
                if (xAxis == AxisType.Logarithmic)
                {
                    activeGraphLayer1.Execute("layer.x.type = 2");
                }
                if (yAxis == AxisType.Logarithmic)
                {
                    activeGraphLayer1.Execute("layer.y.type = 2");
                }
                FormatXYGraph();
            }
        }