This example to show how to create new plot using Shared Data Filter Object
//pp_flt(2, 5, 3, "3:"between(11,15)"", 4, "3:"between(1700,2200)"") void pp_flt(int nx=1, int ny=0, int nShDF1 = -1, string strShDF1 = "", int nShDF2 = -1, string strShDF2 = "", int nPlotType = 201) { Worksheet wks = Project.ActiveLayer(); if(!wks) return; //for MakeDataplotsTree string strBook, strSheet; wks.GetPage().GetName(strBook); wks.GetName(strSheet); DWORD dwAuxTypeInfo, dwLTPlotInfo; string strColPattern; uint nExVal = 0; Tree tr; vector<string> vsWksPages; vector<string> vsLayers; vsWksPages.Add(strBook); vsLayers.Add(strSheet); //XY vector<string> vsCols; vector<uint> vpdesig; Column cx = wks.Columns(nx); Column cy = wks.Columns(ny); string strName; cx.GetName(strName); vsCols.Add(strName); vpdesig.Add(COLDESIG_X); cy.GetName(strName); vsCols.Add(strName); vpdesig.Add(COLDESIG_Y); //Shared Data Filter IntArray arrFilterCols; vector<string> vsShDFs; if (0 <= nShDF1) { arrFilterCols.Add(nShDF1); vsShDFs.Add(strShDF1); } if (0 <= nShDF2) { arrFilterCols.Add(nShDF2); vsShDFs.Add(strShDF2); } for (int iShDF = 0; iShDF < arrFilterCols.GetSize(); iShDF++) { if (0 <= arrFilterCols[iShDF] && !vsShDFs[iShDF].IsEmpty()) { Column cFilter = wks.Columns(arrFilterCols[iShDF]); if (cFilter.IsValid()) { cFilter.GetName(strName); vsCols.Add(strName); vpdesig.Add(COLDESIG_FILTER); } else ASSERT(FALSE); } else ASSERT(FALSE); } //make plot DWORD dwCntrl = DPEDTVIEW_HIDE_LIMITS; int nn = get_plot_type_info(nPlotType, EXIST_WKS, 0, dwAuxTypeInfo, dwLTPlotInfo, strColPattern); int nRet = 0 == Project.MakeDataplotsTree(tr, nn, dwAuxTypeInfo, dwLTPlotInfo, strColPattern, nExVal, vpdesig, vsWksPages, vsLayers, vsCols, dwCntrl , NULL , &vsShDFs ); GraphPage gp; gp.Create("scatter"); // create scatter graph GraphLayer gl = gp.Layers(0); TreeNode trLayer = tr.FirstNode; int nNumPlotsAdded = gl.AddPlots(trLayer, ADDPLOTSFROMTREE_NEW); gl.Rescale(); }