Files

2.8 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
pie_chart component cpp viz 1.1.0 pure void pie_chart(const char* title, const char* const* labels, const float* values, int count, float radius = 0.0f, float height = 200.0f) Pie/donut chart con ImPlot, ejes pineados, altura explicita y tooltip por slice al pasar el mouse
implot
chart
visualization
gpu
pie
donut
tooltip
locked-axes
plot_static_cpp_viz
false
implot
true
slice_at returns -1 outside radius
slice_at on cursor at center returns first slice
slice_at directly above center returns first slice
slice_at right of center hits second slice (CCW)
slice_at single slice always returns 0
slice_at right at radius edge
slice_at unequal slices distributes proportionally
cpp/tests/test_pie_chart_math.cpp cpp/functions/viz/pie_chart.cpp imgui
name desc
title Titulo del grafico (se usa tambien como id interno del plot)
name desc
labels Array de etiquetas para cada segmento del pie
name desc
values Array de valores numericos para cada segmento
name desc
count Numero de segmentos (longitud de labels y values)
name desc
radius Radio del pie (0 = auto 0.4). Positivo = radio explicito. Negativo = modo donut con outer radius = |radius|
name desc
height Altura del plot en pixeles (default 200). Explicita para evitar feedback loops con contenedores AutoResizeY
Renderiza el pie en el frame ImGui actual; muestra tooltip con label + valor + % al pasar por encima de un slice scaffolding/demo en primitives_gallery

pie_chart

Wrapper atomico sobre ImPlot::PlotPieChart configurado para visualizacion estatica en dashboards. Modo pie (radius >= 0) o donut (radius < 0).

v1.1 (2026-04-24)

  • Altura explicita (height): necesaria para evitar vibracion en contenedores con AutoResizeY. Ver viz/plot_static.h.
  • Flags compartidos desde plot_static::kPlotFlags + kAxisFlagsHidden (axis decorations off): sin pan/zoom, sin menus, sin auto-fit, sin highlight al hover.
  • Tooltip por slice: calcula que slice esta bajo el cursor usando atan2(mouse - center) (ImPlot dibuja slices en sentido CCW matematico desde angulo 90°, arriba) y muestra label + valor + porcentaje.
  • Aspect 1:1 mantenido con ImPlotFlags_Equal para que el pie no se deforme en paneles rectangulares.

Ejemplo

const char* labels[] = {"Pure", "Impure"};
float values[] = {412, 187};
pie_chart("##purity", labels, values, 2);                  // pie normal, h=200
pie_chart("##purity", labels, values, 2, -0.4f, 260.0f);   // donut, h=260