Documentation
¶
Overview ¶
Package decision_tree provides functionality to create and render decision trees as SVG.
The package supports: - JSON-based tree definition - Automatic layout calculation - SVG rendering with proper spacing and connections - Custom node styling
Example usage:
tree := &Node{
ID: "root",
Label: "Start",
Children: []*Node{
{ID: "child1", Label: "Option 1"},
{ID: "child2", Label: "Option 2"},
},
}
renderer := NewRenderer(DefaultConfig())
svg := renderer.RenderTree(tree)
RoadMap: - [ ] Add background color for terminal nodes - [ ] Add extra legend - [ ] Adjust font size for conditions - [ ] Make terminal node size more appropriate - [ ] go-ddt supports rendering decision tree via server(live modification): go-ddt edit decision.dtree.json
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct {
// Layout configuration
LevelHeight float64 // Vertical distance between levels
NodeSpacing float64 // Minimum horizontal space between nodes
NodePadding float64 // Text padding inside nodes
BaseNodeWidth float64 // Minimum node width
// Default styles
DefaultStyle *NodeStyle
}
Config holds configuration for tree rendering
type Node ¶
type Node struct {
ID string `json:"id"`
Label string `json:"label"`
Conditions map[string]any `json:"conditions,omitempty"`
Style *NodeStyle `json:"style,omitempty"`
Children []*Node `json:"children,omitempty"`
}
Node represents a single node in the decision tree
type NodeStyle ¶
type NodeStyle struct {
Shape string `json:"shape,omitempty"` // rectangle, diamond
Fill string `json:"fill,omitempty"` // CSS color
Stroke string `json:"stroke,omitempty"` // CSS color
StrokeWidth int `json:"strokeWidth,omitempty"` // line width
}
NodeStyle defines visual properties for a node