Thursday, September 4, 2025
HomeGuest BlogsTermgraph – How To Draw basic graphs on Linux terminal

Termgraph – How To Draw basic graphs on Linux terminal

Hello folks, in this tutorial, we are going to learn how to draw basic graphs on the Linux terminal using a python based tool called Termgraph. Termgraph can be used to draw a number of graphs on the terminal such as; Bar Graphs, Color charts, Multi-variable, Stacked charts, Horizontal or Vertical and Emoji.

Installing Termgraph on Linux 

Below are the steps to install and use Termgraph to draw basic graphs on the terminal.

Step 1: Install Python3

Termgraph requires python3 on the local system to be installed. For Arch Linux users, python3 is the default version that ships with the OS.

Install Python3 on CentOS 7

If running CentOS 7 or any other RHEL derivatives, python3 is available on EPEL repository.

Add EPEL repository then install Python3 using the commands:

sudo yum install -y epel-release
sudo yum install -y python3-setuptools git

Confirm successful installation by checking Python3 version:

$ python3 -V
Python 3.8.10

Install Python 3 on Ubuntu

Install Python3

sudo apt update
sudo apt install python3

Ubuntu 18.04 and other recent releases comes with Python 3.x.

$ python3 -V
Python 3.8.10

Step 2: Install colorama Python module

To install colorama, you need to have pip3 installed. If not already installed, run the following commands to install it;

On RHEL derivatives:

sudo yum install python3-pip

On Debian derivatives:

sudo apt update
sudo apt install -y python3-pip

Once pip3 is installed, install colorama using the commands:

sudo pip3 install colorama

Step 3: Install Termgraph on Linux

To install termgraph using pip3 package manager for Python.

$ sudo pip3 install termgraph
Collecting termgraph
  Downloading termgraph-0.5.3-py3-none-any.whl (15 kB)
Requirement already satisfied: colorama in /usr/lib/python3/dist-packages (from termgraph) (0.4.3)
Installing collected packages: termgraph
Successfully installed termgraph-0.5.3

You are now ready to use termgraph to plot graphs.

$ which termgraph
/usr/local/bin/termgraph

Check help page for basic usage of termgraph:

$ termgraph --help
usage: termgraph [-h] [--title TITLE] [--width WIDTH] [--format FORMAT]
                 [--suffix SUFFIX] [--no-labels]
                 [--color [{red,blue,green,magenta,yellow,black,cyan} [{red,blue,green,magenta,yellow,black,cyan} ...]]]
                 [--vertical] [--stacked] [--different-scale] [--calendar]
                 [--start-dt START_DT] [--custom-tick CUSTOM_TICK]
                 [--delim DELIM] [--verbose] [--version]
                 [filename]

draw basic graphs on terminal

positional arguments:
  filename              data file name (comma or space separated). Defaults to
                        stdin.

optional arguments:
  -h, --help            show this help message and exit
  --title TITLE         Title of graph
  --width WIDTH         width of graph in characters default:50
  --format FORMAT       format specifier to use.
  --suffix SUFFIX       string to add as a suffix to all data points.
  --no-labels           Do not print the label column
  --color [{red,blue,green,magenta,yellow,black,cyan} [{red,blue,green,magenta,yellow,black,cyan} ...]]
                        Graph bar color( s )
  --vertical            Vertical graph
  --stacked             Stacked bar graph
  --different-scale     Categories have different scales.
  --calendar            Calendar Heatmap chart
  --start-dt START_DT   Start date for Calendar chart
  --custom-tick CUSTOM_TICK
                        Custom tick mark, emoji approved
  --delim DELIM         Custom delimiter, default , or space
  --verbose             Verbose output, helpful for debugging
  --version             Display version and exit

Example usage of Termgraph

Create a data file with two columns either comma or space separated. The first column is your labels, the second column is a numeric data

mkdir termgraph-data
cd termgraph-data

Create test data file:

$ vim dset1.dat
2018 200.45
2017 110.45
2016 77.89
2015 66.2
2014 760.00
2013 450.56

Then generate chart on the terminal:

$ termgraph dset1.dat
2018: ▇▇▇▇▇▇▇▇▇ 200.45
2017: ▇▇▇ 110.45
2016: ▏ 77.89
2015: ▏ 66.20
2014: ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 760.00
2013: ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 450.56

This reads data from filedset1.dat.

You can also use colors, see below:

$ vim test2.dat
# Example Data Set with 2 Categories
@ Oranges,Pineapples
2018,200.45,70.5
2017,110.45,300.46
2016,77.89,120.45
2015,66.2,345.22
2014,760.00,30.24
2013,450.56,472

Then run the following command to generate a graph:

$ termgraph test2.dat --color {red,green}

See expected output below:

termgraph colors

Working with stacked data without categories:

$ vim test3.dat 
# Example Data Set without Categories' names
2018,200.45,70.5
2017,110.45,300.46
2016,77.89,120.45
2015,66.2,345.22
2014,760.00,30.24
2013,450.56,472

Then run:

termgraph test3.dat --color {magenta,green} --stacked --title "Stacked Data"

See output:

termgraph stacked data

Using Calendar Heatmap

This expects the first column to be a date in the format YYYY-mm-dd

$ vim cal.dat
2017-01-10 100.34
2017-02-11 50.00
2017-03-12 66.45
2017-04-13 10.11
2017-05-14 0.00
2017-06-15 30
2017-07-16 24.56
2018-01-10 6.55
2018-02-11 6.88
2018-03-12 10.34
2018-04-13 40.45
2018-05-14 66.78
2018-06-15 55.45
2018-07-16 5.67

You can specify the start date

termgraph calender data

Using stdin and emoji

Example of providing emoji symbol on stdin:

echo "Label,5,10,20,15,35,10,45,3,7,28" | termgraph --custom-tick "?" --no-label

The output should be like below:

termgraph using emoji

Enjoy using Termgraph and keep watching for updates.

Similar content:

RELATED ARTICLES

Most Popular

Dominic
32261 POSTS0 COMMENTS
Milvus
81 POSTS0 COMMENTS
Nango Kala
6626 POSTS0 COMMENTS
Nicole Veronica
11795 POSTS0 COMMENTS
Nokonwaba Nkukhwana
11855 POSTS0 COMMENTS
Shaida Kate Naidoo
6747 POSTS0 COMMENTS
Ted Musemwa
7023 POSTS0 COMMENTS
Thapelo Manthata
6695 POSTS0 COMMENTS
Umr Jansen
6714 POSTS0 COMMENTS