Abdur-rahmaanJ / termcharts

Terminal charts
Apache License 2.0
36 stars 2 forks source link
charts graphs hacktoberfest plot stats terminal

termcharts

Terminal charts with rich compatibility in mind

bar

import termcharts

chart1 = termcharts.bar({'roll': 24, 'bread':10, 'rice':30, 'pasta':50}, title='brunches')
chart2 = termcharts.bar({'roll': 24, 'bread':10, 'rice':30, 'pasta':50}, title='brunches', mode='v') # vertical
chart3 = termcharts.bar([10, 20, 30, 40], title='brunches') # from list
print(chart1)
print(chart2)
print(chart3)

Pie

import termcharts

chart = termcharts.pie({'pencil':10, 'eraser': 20, 'ruler': 30}, title='stationary')
print(chart)

Doughnut

import termcharts

chart = termcharts.doughnut({'a':10, 'b': 20, 'c': 30}, title='aphabet dist')
print(chart)

Rich compatibility

from termcharts import pie
from termcharts import doughnut
from termcharts import bar

from rich.console import Console
from rich.columns import Columns
from rich.panel import Panel

console = Console()

charts = [
    doughnut({'a':10, 'b': 20, 'c': 30, 'd': 20}, title='aphabet dist', rich=True),
    pie({'wefwefqwddwqdqwda':10, 'b': 20, 'c': 30, 'd': 20}, rich=True),
    bar({'roll': 24, 'bss':10, 'wes':30, 'ewfwef':50}, title='Brunches', rich=True)
    ]
user_renderables = [Panel(x, expand=True) for x in charts]
console.print(Columns(user_renderables))

Testing

All testing is currently handled by the pytest module and are incomplete at the momment.

Installation:

pip install -U pytest

Run all the testcases in a file:

pytest tests/<file>.py

Run one testcase in a file:

pytest tests/<file>.py::<function_name>

Exclude one testcase in a file:

pytest tests/<file>.py -k 'not <function_name>'