public TreeVisualization(List <ITree> trees, string[] keywords = null) { _trees = trees; _dataNodeSchemes = trees.ConvertAll(tree => TreeNodeScheme.Get(tree.Graph.NodeTable)); if (keywords == null) { keywords = new string[0]; } _keywords = keywords; _vecGen = new VectorGenerator(new TokenizeConfig(TokenizerType.Standard, StopWordsFile.EN)); _window = new TreeWindow(); _display = _window.TreeDisplay; _vis = new Visualization(_display); int treeIndex = 0; _visNodeTables = new List <IVisualTable>(); _visEdgeTables = new List <IVisualTable>(); _visNodeSchemes = new List <TreeNodeVisualTableScheme>(); foreach (var tree in _trees) { var visNodeTable = _vis.BuildVisualTable("VisNodeTable" + treeIndex, tree.Graph.NodeTable, _display); var visEdgeTable = _vis.BuildVisualTable("VisEdgeTable" + treeIndex, tree.Graph.EdgeTable, _display); var visNodeScheme = new TreeNodeVisualTableScheme(visNodeTable, tree.Graph, keywords); visEdgeTable.EnsureStyles(Styles.X1, Styles.X2, Styles.Y1, Styles.Y2, Styles.Visible, Styles.Layer); visEdgeTable.AddConstantColumn <IRender>(Styles.Render, new SimpleEdgeRender()); _visNodeTables.Add(visNodeTable); _visEdgeTables.Add(visEdgeTable); _visNodeSchemes.Add(visNodeScheme); treeIndex++; } Show(); }
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); }