3.3.14 Plot with Shared Data Filter Object
Plot with Shared Data Filter Object
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();
}
|