Files
fn_registry/cpp/functions/viz/sparkline.md
T

2.6 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, tested, tests, test_file_path, file_path, framework, params, output, notes
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports tested tests test_file_path file_path framework params output notes
sparkline component cpp viz 1.0.0 pure void sparkline(const char* id, const float* values, int count, float width = 100.0f, float height = 20.0f) Renderiza un mini grafico de lineas inline para uso en tablas, headers y KPI cards
imgui
visualization
sparkline
inline
dashboard
false
imgui
true
compiles and links against Catch2 (placeholder, visual cubierto en 0048)
cpp/tests/test_sparkline.cpp cpp/functions/viz/sparkline.cpp imgui
name desc
id Identificador unico del widget, usado con PushID/PopID para garantizar unicidad en tablas
name desc
values Array de valores float del sparkline (serie temporal)
name desc
count Numero de valores en el array
name desc
width Ancho en pixels del sparkline (default 100.0)
name desc
height Alto en pixels del sparkline (default 20.0)
Renderiza el sparkline inline en el frame ImGui actual, reservando espacio con ImGui::Dummy scaffolding/demo en primitives_gallery

sparkline

Mini grafico de lineas inline construido sobre ImGui draw primitives. No requiere ImPlot.

Auto-escala el eje Y al rango minimo/maximo de los valores. Dibuja una polyline con relleno semitransparente bajo la curva. Disenado para encajar en celdas de tablas, headers y tarjetas KPI.

Ofrece dos overloads:

  • Sin color: usa verde suave por defecto (ImVec4(0.35, 0.85, 0.45, 1.0))
  • Con color: acepta cualquier ImVec4 para personalizar la linea y el relleno

Debe llamarse dentro del render callback de fn::run_app (o cualquier contexto con un frame ImGui activo).

Ejemplo

// En una celda de tabla
ImGui::TableNextColumn();
sparkline("##revenue_spark", revenue.data(), (int)revenue.size(), 80.0f, 18.0f);

// Con color personalizado (rojo para valores negativos)
sparkline("##pnl", pnl.data(), (int)pnl.size(),
          ImVec4(0.9f, 0.3f, 0.3f, 1.0f), 100.0f, 20.0f);

// KPI card inline con label
ImGui::Text("Revenue"); ImGui::SameLine();
sparkline("kpi_rev", data, count);

Notas

  • El relleno bajo la curva usa alpha 40/255 del mismo color de la linea.
  • Si todos los valores son iguales (rango < 1e-6), la linea se dibuja en el centro verticalmente.
  • El grosor de linea es 1.5px para que sea legible a alturas de 16-24px.
  • id no se muestra visualmente; solo se pasa a PushID para que ImGui diferencie widgets con los mismos datos en la misma tabla.