private void CalculateDocuments() { var scheme = _scheme; var nodeList = _tree.BFS(_tree.Root); foreach (var node in nodeList) { scheme.SetTopicLeafDocIndices(node, new List <int>()); if (scheme.GetDocIndex(node) >= 0) { scheme.GetTopicLeafDocIndices(node).Add(scheme.GetDocIndex(node)); } } foreach (var node in nodeList.Reverse()) { var docList = scheme.GetTopicLeafDocIndices(node); var parent = _tree.GetParent(node); if (parent != null) { scheme.GetTopicLeafDocIndices(parent).AddRange(docList); } } }
private void ViewTreemap() { var polygonTable = Vis.BuildVisualTable("poly", Display, 1); polygonTable.AddColumn <Brush>(Styles.StrokeBrush, BrushLib.FromColor(Colors.Black)); polygonTable.AddColumn <Brush>(Styles.FillBrush, BrushLib.FromColor(Colors.White)); polygonTable.EnsureStyles(Styles.X, Styles.Y, Styles.Opacity, Styles.StrokeWidth); polygonTable.AddColumn <List <double> >("polygon", null); polygonTable.AddColumn <double>("depth", 0); //polygonTable.AddColumn<INode>("node", null); int depth_idx = polygonTable.GetColumnIndex("depth"); int polygon_idx = polygonTable.GetColumnIndex("polygon"); //int node_idx = polygonTable.GetColumnIndex("node"); var node_list = Treemap.BFS(Treemap.Root).Reverse <INode>(); foreach (INode i in node_list) { int depth = Treemap.GetDepth(i); if (depth > 0) { int height = MaxDepth - depth + 1; int row = polygonTable.AddRow(); polygonTable.Set <List <double> >(row, polygon_idx, i.Get <Polygon>("attribute").ToListDouble()); //polygonTable.Set<INode>(row, node_idx, i); polygonTable.Set <double>(row, Styles.StrokeWidth, 1.5 * height / MaxDepth); if (depth > 2) { polygonTable.Set <Brush>(row, Styles.StrokeBrush, BrushLib.FromColor(ColorLib.NewAlpha(Colors.Black, 0.4))); } polygonTable.Set <Brush>(row, Styles.FillBrush, BrushLib.FromColor(Color.FromArgb(Convert.ToByte(40 + 20 * height / MaxDepth), Convert.ToByte(30 * depth / MaxDepth), 0, Convert.ToByte(255 * height / MaxDepth)))); //polygonTable.Set<Brush>(row, Styles.FillBrush, BrushLib.FromColor(ColorLib.NewAlpha(ColorLib.Category10[0], 0.3))); } } //polygonTable.AutoRepaint = true; var polygonRender = new GeometryRender(vi => { var polygon = GeometryLib.Polygon(vi.Get <List <double> >(polygon_idx), true, true); return(polygon); }); polygonTable.SetupRender(polygonRender); }