---
name: pie_chart
kind: component
lang: cpp
domain: viz
version: "1.0.0"
purity: pure
signature: "void pie_chart(const char* title, const char* const* labels, const float* values, int count, float radius = 0.0f)"
description: "Renderiza un grafico circular (pie/donut) usando ImPlot PlotPieChart dentro de un frame ImGui"
tags: [implot, chart, visualization, gpu, pie, donut]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: ""
imports: [implot]
tested: false
tests: []
test_file_path: ""
file_path: "cpp/functions/viz/pie_chart.cpp"
framework: imgui
params:
  - name: title
    desc: "Titulo del grafico"
  - name: labels
    desc: "Array de etiquetas para cada segmento del pie"
  - name: values
    desc: "Array de valores numericos para cada segmento"
  - name: count
    desc: "Numero de segmentos (longitud de labels y values)"
  - name: radius
    desc: "Radio del pie (0 = auto 0.4). Positivo = radio explicito. Negativo = modo donut con outer radius = |radius| e inner = 0.2"
output: "Renderiza el grafico circular en el frame ImGui actual"
---

# pie_chart

Wrapper atomico sobre `ImPlot::PlotPieChart` con soporte para modo pie y modo donut.

El eje del plot se configura con `ImPlotAxisFlags_NoDecorations` para ocultar los ejes y mostrar solo el grafico circular. El aspecto se fuerza a cuadrado con `ImPlotFlags_Equal`.

**Modo pie** (`radius >= 0`): dibuja un pie chart solido. Si `radius == 0`, usa radio automatico de 0.4.

**Modo donut** (`radius < 0`): usa `|radius|` como radio exterior. El agujero interior es fijo en 0.2, suficiente para texto central.

Debe llamarse dentro del render callback de `fn::run_app`.
