---
name: line_plot
kind: component
lang: cpp
domain: viz
version: "1.3.0"
purity: pure
signature: "void line_plot(const char* title, const float* xs, const float* ys, int count, float height = 200.0f)"
description: "Line plot 2D con ImPlot, ejes pineados y altura explicita para no vibrar al redimensionar"
tags: [implot, chart, visualization, gpu, line, locked-axes, cpp-dashboard-viz]
uses_functions: ["plot_static_cpp_viz"]
uses_types: []
returns: []
returns_optional: false
error_type: ""
imports: [implot]
tested: false
tests: []
test_file_path: ""
file_path: "cpp/functions/viz/line_plot.cpp"
framework: imgui
params:
  - name: title
    desc: "Titulo del grafico / id interno del plot"
  - name: xs
    desc: "Array de coordenadas X"
  - name: ys
    desc: "Array de coordenadas Y"
  - name: count
    desc: "Numero de puntos en los arrays xs/ys"
  - name: height
    desc: "Altura del plot en pixeles (default 200). Explicita para evitar feedback loops con contenedores AutoResizeY"
output: "Renderiza la linea en el frame ImGui actual con ejes pineados"
notes: "consumido por cpp/apps/chart_demo/main.cpp; scaffolding/demo en primitives_gallery"
---

# line_plot

Wrapper atomico sobre `ImPlot::PlotLine` configurado para visualizacion estatica.

## v1.1

- **Altura explicita** (`height`) — evita vibracion en contenedores con `AutoResizeY`.
- **Ejes pineados** con `plot_static::kAxisFlags` + `ImPlotCond_Always` calculados a partir de los extremos de `xs`/`ys` con 5% de headroom en Y.
- **Sin inputs, sin auto-fit** — ver `viz/plot_static.h`.

Soporta `float` y `double`.

## Capability growth log

- v1.2.0 (2026-05-18) — Overloads `(..., y_min, y_max, height)` para series con dominio conocido (CPU%/RAM% -> 0,100). Mantiene los overloads de auto-fit historico intactos. Tipos float y double.
- v1.3.0 (2026-05-18) — Overloads `(..., x_min, x_max, y_min, y_max, height)` que pinea AMBOS ejes. Util para ventanas temporales fijas (ej. ultimos 5 min): xs en [0, 300], el grafico NO se aplasta al variar count durante warmup.
