Charta Logo

Charta - Terminal Graph Generator

Colorful Terminal Graphs

Summary

Charta is a command-line tool written in Go for generating colorful terminal graphs from data files or stdin input. It supports multiple graph types (Simple, MinMax, Compare, and Cumul) and various input formats including JSON, YAML, and plain text. Charta provides flexible input options, colorful output with customizable colors and label colors, grouping capabilities for data analysis, threshold support with warning and alert levels, and support for negative values. Perfect for data visualization in terminal environments and shell scripting workflows.

Features

Multiple Graph Types

Simple value graphs, Min/Max/Average graphs, Comparison graphs for side-by-side values, and Cumulative graphs for stacked segments.

Flexible Input

Support for JSON, YAML, TXT files, or stdin input for maximum flexibility.

Colorful Output

Terminal-based graphs with customizable graph colors and label colors (red, green, yellow, blue, magenta, cyan, grey, orange*, purple*).

*: only for Truecolor Terminals

Data Grouping

Group multiple values for averaging or analysis with configurable grouping options.

Threshold Support

Warning and alert thresholds with color coding for monitoring and alerting.

Customizable Display

Adjustable width, min/max values, labels, graph colors, label colors, and titles for personalized visualization. Support for negative values with proper scaling.

Easy Integration

Perfect for shell scripts, monitoring systems, and data analysis pipelines.

Installation Charta

Requirements

Go 1.24.6 or later

Distribution packages

Packaging status

Manual installation

Installation
$ # Build from source:
$ git clone https://codeberg.org/spn109/charta.git
$ go build -o charta

$ # Make executable and install:
$ chmod +x charta
$ sudo mv charta /usr/local/bin/

$ # Or install directly with go:
$ go install codeberg.org/spn109/charta@latest

Usage - Charta

Basic Command Structure

Basic Usage
$ charta <graph-type> [graph-options] [values...]

Graph Types

Simple Graph

Displays a single value as a horizontal bar graph:

Simple Graph Example
$ charta simple 75
$ charta simple --min 0 --max 100 --label "Utilisation CPU" 85
Graphique simple

MinMax Graph

Displays minimum, average, and maximum values from a dataset:

MinMax Graph Example
$ ./charta minmax 10 20 30 40 50
$ ./charta minmax --label "Temps de Réponse" 120 150 180 200 175
Graphique Min/Avg/Max

Compare Graph

Displays two values side-by-side for direct comparison:

Compare Graph Example
$ ccharta compare -B sum -b 1 -M 2300 -t "Pyramide des âges en France en 2018" --legend "Femmes (par milliers)" --legend2 "Hommes (par milliers)" --color "light-red" --color2 "blue" -b 5 -f Age2.txt
Compare Graph

Cumul Graph

Displays multiple values as stacked colored segments in a single cumulative bar:

Cumul Graph Example
$ charta compare -B sum -b 1 -M 2300 -t "Pyramide des âges en France en 2018" --legend "Femmes (par milliers)" --legend2 "Hommes (par milliers)" --color "light-red" --color2 "blue" -b 5 -f Age2.txt
Cumul Graph

Global Options

  • -f, --file <file>: Input file (JSON, YAML, TXT) or "stdin"
  • -H, --help_for_file <type>: Display formatted help for file type (txt, json, yaml)
  • -G, --groupby <n>: Group N values together (default: 1)
  • -m, --min <value>: Minimum scale value (default: 0)
  • -M, --max <value>: Maximum scale value (default: 100)
  • -w, --width <value>: Graph width in characters (default: 100)
  • -l, --label <text>: Label for the graph (default: "Label")
  • -c, --color <color>: Graph color (red, green, yellow, blue, magenta, cyan, grey, orange*, purple*)
  • -L, --label_color <color>: Label color (red, green, yellow, blue, magenta, cyan, grey, orange*, purple*)
  • -W, --warning <value>: Warning threshold (default: 50)
  • -A, --alert <value>: Alert threshold (default: 80)
  • -t, --title <text>: Graph title
  • -T, --title_color <color>: Title color (default: blue)
  • -g, --legend <text>: Legend text for values

*orange and purple require truecolor terminal support

Compare Graph Specific Options

  • -G, --legend2 <text>: Legend text for the second value
  • -C, --color2 <color>: Color for the second value's bar

Cumul Graph Specific Options

  • -v, --values <value>: Add a value to the cumulative graph (can be used multiple times)
  • -c, --colors <colors>: Comma-separated list of colors for each segment
  • -l, --labels <labels>: Comma-separated list of labels for the legend
  • -g, --nolegend: Hide the legend display

Input File Formats

JSON Format

JSON Example
{
        "type": "minmax",
        "values": [10, 20, 30, 40, 50]
}

Examples

Display CPU usage with custom colors and thresholds
CPU Usage Example
$ charta simple --label "Utilisation CPU" --warning 70 --alert 90 85
Graphique Simple with Treshold
Analyze response times from JSON file
Response Times Example
$ charta minmax --file response_times.json --label "Temps de Réponse API"
Graphique Min/Avg/Max from JSON File
Monitor system metrics with stdin input
Stdin Input Example
$ {for i in 45 67 23 89 12; do echo $i; done} | charta minmax --file stdin --color blue
Graphique Min/Avg/Max from STDIN
Compare two values
Compare Example
$ charta compare -B sum -b 1 -M 2300 -t "Pyramide des âges en France en 2018" --legend "Femmes (par milliers)" --legend2 "Hommes (par milliers)" --color "light-red" --color2 "blue" -b 5 -f Age2.txt
Compare Graph from File
Display cumulative values from stdin
Cumul from Stdin Example
$ echo -e "45.2\n62.8\n38.5" | charta cumul --file stdin --colors red,green,blue --labels CPU,RAM,Disk --title "Server Resources"
Cumul Graph from STDIN

Charta - Générateur de Graphiques pour le Terminal

Graphiques Terminaux Colorés

Résumé

Charta est un outil en ligne de commande écrit en Go pour générer des graphiques colorés dans un terminal à partir de fichiers de données ou d'entrée stdin. Il prend en charge plusieurs types de graphiques (Simple, MinMax, Compare et Cumul) et divers formats d'entrée, notamment JSON, YAML et texte brut. Charta offre des options d'entrée flexibles, une sortie colorée avec des couleurs personnalisables pour les graphiques et les étiquettes, des capacités de regroupement pour l'analyse de données, un support de seuils avec des niveaux d'avertissement et d'alerte, et la prise en charge des valeurs négatives. Parfait pour la visualisation de données dans les environnements terminaux et les workflows de scripts shell.

Fonctionnalités

Types de Graphiques Multiples

Graphiques de valeurs simples, graphiques Min/Max/Moyenne, graphiques de comparaison côte à côte, et graphiques cumulatifs avec segments empilés.

Entrée Flexible

Support des fichiers JSON, YAML, TXT, ou entrée stdin pour une flexibilité maximale.

Sortie Colorée

Graphiques basés sur le terminal avec couleurs personnalisables pour les graphiques et les étiquettes (rouge, vert, jaune, bleu, magenta, cyan, gris, orange*, violet*).

* : uniquement pour les terminaux TrueColor

Regroupement de Données

Regrouper plusieurs valeurs pour la moyenne ou l'analyse avec des options de regroupement configurables.

Support de Seuils

Seuils d'avertissement et d'alerte avec codage couleur pour la surveillance et les alertes.

Affichage Personnalisable

Largeur ajustable, valeurs min/max, étiquettes, couleurs des graphiques, couleurs des étiquettes et titres pour une visualisation personnalisée. Support des valeurs négatives avec mise à l'échelle appropriée.

Intégration Facile

Parfait pour les scripts shell, les systèmes de surveillance et les pipelines d'analyse de données.

Installation de Charta

Prérequis

Go 1.24.6 ou ultérieur

Paquets de Distribution

Packaging status

Installation manuelle

Installation
$ # Compiler depuis les sources :
$ git clone https://codeberg.org/spn109/charta.git
$ go build -o charta

$ # Rendre exécutable et installer :
$ chmod +x charta
$ sudo mv charta /usr/local/bin/

$ # Ou installer directement avec go :
$ go install codeberg.org/spn109/charta@latest

Guide Utilisation Charta

Structure de Commande de Base

Utilisation de Base
$ charta <type-graphique> [options-graphique] [valeurs...]

Types de Graphiques

Graphique Simple

Affiche une valeur unique sous forme de graphique à barres horizontales :

Exemple Graphique Simple
$ charta simple 75
$ charta simple --min 0 --max 100 --label "Utilisation CPU" 85
Graphique simple

Graphique MinMax

Affiche les valeurs minimum, moyenne et maximum d'un jeu de données :

Exemple Graphique MinMax
$ charta minmax 10 20 30 40 50
$ charta minmax --label "Temps de Réponse" 120 150 180 200 175
Graphique Min/Moy/Max

Graphique Compare

Affiche deux valeurs côte à côte pour une comparaison directe :

Exemple Graphique Compare
$ charta compare -B sum -b 1 -M 2300 -t "Pyramide des âges en France en 2018" --legend "Femmes (par milliers)" --legend2 "Hommes (par milliers)" --color "light-red" --color2 "blue" -b 5 -f Age2.txt
Graphique Compare

Graphique Cumul

Affiche plusieurs valeurs sous forme de segments colorés empilés dans une seule barre cumulative :

Exemple Graphique Cumul
$ charta compare -B sum -b 1 -M 2300 -t "Pyramide des âges en France en 2018" --legend "Femmes (par milliers)" --legend2 "Hommes (par milliers)" --color "light-red" --color2 "blue" -b 5 -f Age2.txt
Graphique Cumul

Options Globales

  • -f, --file <fichier>: Fichier d'entrée (JSON, YAML, TXT) ou "stdin"
  • -H, --help_for_file <type>: Afficher l'aide formatée pour le type de fichier (txt, json, yaml)
  • -G, --groupby <n>: Regrouper N valeurs ensemble (défaut : 1)
  • -m, --min <valeur>: Valeur d'échelle minimum (défaut : 0)
  • -M, --max <valeur>: Valeur d'échelle maximum (défaut : 100)
  • -w, --width <valeur>: Largeur du graphique en caractères (défaut : 100)
  • -l, --label <texte>: Étiquette pour le graphique (défaut : "Label")
  • -c, --color <couleur>: Couleur du graphique (red, green, yellow, blue, magenta, cyan, grey, orange*, purple*)
  • -L, --label_color <couleur>: Couleur de l'étiquette (red, green, yellow, blue, magenta, cyan, grey, orange*, purple*)
  • -W, --warning <valeur>: Seuil d'avertissement (défaut : 50)
  • -A, --alert <valeur>: Seuil d'alerte (défaut : 80)
  • -t, --title <texte>: Titre du graphique
  • -T, --title_color <couleur>: Couleur du titre (défaut : blue)
  • -g, --legend <texte>: Texte de légende pour les valeurs

*orange et purple nécessitent un support terminal truecolor

Options Spécifiques au Graphique Compare

  • -G, --legend2 <texte>: Texte de légende pour la deuxième valeur
  • -C, --color2 <couleur>: Couleur pour la barre de la deuxième valeur

Options Spécifiques au Graphique Cumul

  • -v, --values <valeur>: Ajouter une valeur au graphique cumulatif (peut être utilisé plusieurs fois)
  • -c, --colors <couleurs>: Liste de couleurs séparées par des virgules pour chaque segment
  • -l, --labels <étiquettes>: Liste d'étiquettes séparées par des virgules pour la légende
  • -g, --nolegend: Masquer l'affichage de la légende

Formats de Fichiers d'Entrée

Format JSON

Exemple JSON
{
        "type": "minmax",
        "values": [10, 20, 30, 40, 50]
}

Exemples

Afficher l'utilisation CPU avec couleurs et seuils personnalisés
Exemple Utilisation CPU
$ charta simple --label "Utilisation CPU" --warning 70 --alert 90 85
Graphique Simple avec Seuils
Analyser les temps de réponse depuis un fichier JSON
Exemple Temps de Réponse depuis un fichier JSON
$ charta --file temps_reponse.json --label "Temps de Réponse API"
Graphique Min/Moy/Max depuis JSON
Surveiller les métriques système avec entrée stdin
Exemple Entrée STDIN
$ {for i in 45 67 23 89 12; do echo $i; done} | charta minmax --file stdin --color blue
Graphique Min/Moy/Max depuis STDIN
Comparer deux valeurs
Exemple Compare
$ charta compare --file Age2.txt --label "Population" --legend "Hommes" --legend2 "Femmes"
Graphique Compare depuis Fichier
Afficher des valeurs cumulatives depuis stdin
Exemple Cumul depuis Stdin
$ echo -e "45.2\n62.8\n38.5" | charta cumul --file stdin --colors red,green,blue --labels CPU,RAM,Disque --title "Ressources Serveur"
Graphique Cumul depuis STDIN