feat(viz): sankey diagram — BFS topologico + bandas curvas (bezier cubico)
compute_levels asigna columnas via BFS, los nodos se apilan verticalmente proporcional a max(in_total, out_total). Los links se renderizan como bandas con bezier cubico, color del nodo origen + alpha bajo. Asume DAG (sin ciclos). Si hay ciclos, los nodos del ciclo quedan en su nivel parcial — no rompe pero puede solapar visualmente.
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
#pragma once
|
||||
|
||||
// Sankey diagram para flujos source -> target con magnitudes.
|
||||
//
|
||||
// Asume DAG (sin ciclos). Si hay ciclos, los nodos sin nivel quedan en la
|
||||
// columna 0 — visualmente raro pero no rompe.
|
||||
|
||||
#include "imgui.h"
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
struct SankeyNode {
|
||||
std::string label;
|
||||
};
|
||||
|
||||
struct SankeyLink {
|
||||
int src;
|
||||
int dst;
|
||||
float value;
|
||||
};
|
||||
|
||||
void sankey(const char* id,
|
||||
const std::vector<SankeyNode>& nodes,
|
||||
const std::vector<SankeyLink>& links,
|
||||
ImVec2 size = ImVec2(-1.0f, 400.0f));
|
||||
Reference in New Issue
Block a user