64330944e1
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.
26 lines
582 B
C++
26 lines
582 B
C++
#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));
|