コード例 #1
0
ファイル: ViewItemSet.cpp プロジェクト: huyite/VisualizeFI
void ViewItemSet::reBuildTree(const ItemSet& it){
	Graph *graph=getGlMainWidget()->getGraph();
	vector<ItemSet> data;
	DataSet dataset;
	bool b=graph->getAttribute("datasetitem",dataset);
	bool c=dataset.get("ItemSet",data);
	graph->holdObservers();
	graph->clear();
	StringProperty *labelItemSet=graph->getLocalProperty<StringProperty>("viewLabel");
	DoubleProperty *frequentItemSet=graph->getLocalProperty<DoubleProperty>("viewFrequent");
	//ItemSet itemset;
	node nodeNull=graph->addNode();
	node curNode;
	node pointerSon;
	labelItemSet->setNodeValue(nodeNull,"NULL");
	frequentItemSet->setNodeValue(nodeNull,0);
	int x=data.size();
	for(int i=0;i<x;i++){
		ItemSet &itemset=data[i];
			int size=itemset.numberOfItem();
			double fr= atof(itemset.getItem(size-1)->getName().c_str());
			itemset.removeItem(size);
			if(size!=0){
					curNode=nodeNull;   //cursor node

                    for(int i=0;i<size-1;i++)
						if(it.isExitItem(*itemset.getItem(i)))
							itemset.getItem(i)->setPriority(true);

					itemset.sortItems();

					for(int i=0;i<size-1;i++)
					{
						pointerSon=isNodeSon(itemset.getItem(i)->getName(),curNode);
						if(!pointerSon.isValid()){
							node n= node();
							n=graph->addNode();
							labelItemSet->setNodeStringValue(n,itemset.getItem(i)->getName());
							frequentItemSet->setNodeValue(n,fr);
							edge e=graph->addEdge(curNode,n);
							curNode=n;

						}else{
							curNode= pointerSon;
							frequentItemSet->setNodeValue(curNode,frequentItemSet->getNodeValue(curNode)+fr);

						}
					}


				}
			itemset.clear();

	}
	  string erreurMsg;
	 DataSet tmp;
				 LayoutProperty * layout = graph->getLocalProperty<LayoutProperty>("viewLayout"); // get the viewLayout property of your graph
				StructDef structDef = LayoutProperty::factory->getPluginParameters("Hierarchical Tree (R-T Extended)");
							  structDef.buildDefaultDataSet(tmp,graph);
						     // tmp.set<float>("node size", nodeSize);
						  	 // tmp.set<float>("layer spacing", 200.);
						  	 // tmp.set<float>("node spacing", 20.);
						  	  //tmp.set("orthogonal", true);
						  	  StringCollection tmpS("vertical;horizontal;");
						  	  tmp.set("orientation", tmpS);

						  	  LayoutProperty tempLayout(graph);
						  	  tempLayout = *layout;
						  	  graph->computeProperty<LayoutProperty>("Hierarchical Tree (R-T Extended)", &tempLayout,   //"Squarified Tree Map","Hierarchical Graph"
						  			                              erreurMsg, 0, &tmp); // call to the plugin.
						  	  *layout = tempLayout;
	graph->unholdObservers();
}