Esempio n. 1
0
        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);
                }
            }
        }
Esempio n. 2
0
        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);
        }