termplot
Gráficos en consola (TUI) usando Unicode Braille (2×4 “píxeles” por carácter) y color ANSI. Permite dibujar scatter plots, líneas, barras, polígonos, círculos, rejillas, ejes, texto y animaciones en terminal, sin depender de GUI.
Ideal para logs, dashboards ligeros, debugging visual, CLI tools, demos y “plots” rápidos en SSH.
✨ Características
- Canvas de alta densidad con Braille (2×4) → más resolución que ASCII clásico.
- Color por celda de carácter (ANSI / TrueColor si tu terminal lo soporta).
- Auto-Range (v0.8+): cálculo automático de escalas para tus datos.
- Modo No-Color (v0.8+): renderizado sin códigos ANSI para logs planos y terminales antiguos.
- Primitivas de dibujo:
set_pixelline(Bresenham)circle(punto medio)set_char,set_char_vertical
- Charts:
scatter()nube de puntosline_chart()serie conectadabar_chart()barras (con auto-ancho y protección de límites)polygon()polígonospie_chart()“pie radar” (radios + contorno)draw_grid()rejilladraw_axes()ejes + etiquetas min/maxplot_function()plotea funcionesf(x)directamentetext()capa de texto
- Animación por frames sobrescribiendo el cursor (sin limpiar pantalla completa).
📦 Instalación
Crates.io
[]
= "0.1"
Desde repo (path local)
[]
= { = "../termplot" }
🚀 Quick start
use ChartContext;
use Color;
🧪 Demo / Examples
El proyecto incluye una demo completa en examples/demo.rs.
Tip: si quieres comprobar solo compilación del ejemplo:
🧱 Renderizado
Estándar (con bordes)
println!;
Con título y sin bordes (dashboards minimalistas)
println!;
No-Color (plain text / logs)
println!;
🧠 Conceptos básicos
El canvas se define en caracteres: (width, height).
Cada carácter Braille contiene 2×4 subpíxeles, así que la resolución real es:
pixel_width = width * 2pixel_height = height * 4
⚙️ Features
Actualmente:
render_no_color()produce salida sin ANSI (ideal para logs).- El crate usa
coloredpara colorear el render estándar.
Nota: aunque
coloredpuede estar definido comooptionalenCargo.toml, el código todavía no está “feature-gated” por completo. En roadmap: soportar--no-default-featuresde forma limpia concfg(feature="color").
✅ Compatibilidad (MSRV)
- Rust edition 2024 (necesitas una toolchain que soporte 2024).
- Terminal con buen soporte Unicode recomendado.
🧰 Desarrollo
Generar docs:
📦 Publicación (checklist rápida)
Antes de publicar en crates.io:
-
Asegúrate de tener
LICENSE(MIT) yREADME.mden el repo. -
Revisa
Cargo.toml:description,license,repository,homepage(si aplica)keywords,categories(opcional pero recomendable)
-
Ejecuta:
Y publica:
🗺️ Roadmap
- Mejor manejo de límites en
text()ybar_chart(). - Cálculo de auto-range con padding configurable.
- Renderizado sin color ANSI (
render_no_color()). - Títulos centrados opcionales (
render_with_options). - Hacer
coloredrealmente opcional concfg(feature="color"). - Leyendas automáticas (Series A, B, C).
- Histogramas de frecuencia.
📄 Licencia
MIT