Skip to main content

A simple plain-text, no-dependencies, pip-installable, open-source charting utility in Python.

Project description

PlainChart

A simple plain-text, no-dependencies, pip-installable, open-source charting utility in Python.

Usage:

>>> import plainchart
>>> chart = plainchart.PlainChart([3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 9]) # ๐Ÿฅง
>>> print(chart.render())

     โ–Œ     โ–Œ
     โ–Œ     โ–Œ
     โ–Œ     โ–Œ
     โ–Œ โ–Œ   โ–Œ
    โ–Œโ–Œ โ–Œโ–Œ โ–Œโ–Œ
    โ–Œโ–Œ โ–Œโ–Œ โ–Œโ–Œ
  โ–Œ โ–Œโ–Œ โ–Œโ–Œ โ–Œโ–Œ
โ–Œ โ–Œ โ–Œโ–Œ โ–Œโ–Œโ–Œโ–Œโ–Œ
โ–Œ โ–Œ โ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œ
โ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œ

Installation

To install PlainChart, you can use pipenv or pip:

$ pipenv install plainchart

Features

With PlainChart, you can:

  • render an array of values in a plain text chart
  • limit the height of the chart and have the values rendered accordingly
  • render a different style of chart, e.g., plainchart.PlainChart.bar or plainchart.PlainChart.scatter
  • implement your own style of chart, e.g., mean_html (see example below)

Examples

>>> import plainchart
>>> import random
>>>
>>> values = [random.randint(0, 10) for _ in range(100)]
>>> chart = plainchart.PlainChart(values)
>>>
>>> print(chart.render())

        โ–Œ   โ–Œ       โ–Œ   โ–Œ                         โ–Œ                      โ–Œ        โ–Œ        โ–Œ
  โ–Œ     โ–Œ   โ–Œ   โ–Œโ–Œ  โ–Œ   โ–Œ  โ–Œ                      โ–Œ                   โ–Œ  โ–Œ        โ–Œ        โ–Œ
  โ–Œ     โ–Œ   โ–Œโ–Œ  โ–Œโ–Œ  โ–Œ   โ–Œ  โ–Œโ–Œ                     โ–Œ   โ–Œ    โ–Œโ–Œ  โ–Œ   โ–Œ  โ–Œ  โ–Œ     โ–Œ  โ–Œ    โ–Œ   โ–Œ       โ–Œ
  โ–Œ โ–Œ  โ–Œโ–Œ   โ–Œโ–Œ  โ–Œโ–Œโ–Œ โ–Œ  โ–Œโ–Œ โ–Œโ–Œโ–Œ                 โ–Œ   โ–Œ   โ–Œ    โ–Œโ–Œ  โ–Œ  โ–Œโ–Œ  โ–Œ  โ–Œ   โ–Œ โ–Œ  โ–Œ  โ–Œ โ–Œ   โ–Œ       โ–Œ
  โ–Œ โ–Œ  โ–Œโ–Œโ–Œ  โ–Œโ–Œ  โ–Œโ–Œโ–Œ โ–Œโ–Œ โ–Œโ–Œ โ–Œโ–Œโ–Œโ–Œ   โ–Œ         โ–Œ  โ–Œ   โ–Œ   โ–Œ    โ–Œโ–Œ  โ–Œ  โ–Œโ–Œ  โ–Œ  โ–Œ   โ–Œ โ–Œ โ–Œโ–Œโ–Œ โ–Œ โ–Œ   โ–Œ       โ–Œ
  โ–Œ โ–Œ  โ–Œโ–Œโ–Œ  โ–Œโ–Œ  โ–Œโ–Œโ–Œ โ–Œโ–Œ โ–Œโ–Œ โ–Œโ–Œโ–Œโ–Œ   โ–Œโ–Œ        โ–Œ  โ–Œ   โ–Œ โ–Œ โ–Œ    โ–Œโ–Œ  โ–Œ  โ–Œโ–Œ  โ–Œ โ–Œโ–Œ   โ–Œ โ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œ โ–Œโ–Œโ–Œ โ–Œ       โ–Œ
  โ–Œ โ–Œ  โ–Œโ–Œโ–Œ  โ–Œโ–Œ  โ–Œโ–Œโ–Œ โ–Œโ–Œ โ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œ โ–Œโ–Œโ–Œ    โ–Œ  โ–Œ  โ–Œ โ–Œ โ–Œ โ–Œ โ–Œ โ–Œ  โ–Œโ–Œ  โ–Œ  โ–Œโ–Œ  โ–Œ โ–Œโ–Œ   โ–Œ โ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œ โ–Œโ–Œโ–Œ โ–Œโ–Œ     โ–Œโ–Œ
  โ–Œ โ–Œ โ–Œโ–Œโ–Œโ–Œ โ–Œโ–Œโ–Œ โ–Œโ–Œโ–Œโ–Œ โ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œ โ–Œโ–Œโ–Œ  โ–Œ โ–Œ  โ–Œ  โ–Œ โ–Œโ–Œโ–Œ โ–Œ โ–Œ โ–Œโ–Œ โ–Œโ–Œโ–Œ โ–Œ  โ–Œโ–Œโ–Œ โ–Œ โ–Œโ–Œ   โ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œ โ–Œโ–Œโ–Œ โ–Œโ–Œ   โ–Œ โ–Œโ–Œ
 โ–Œโ–Œโ–Œโ–Œ โ–Œโ–Œโ–Œโ–Œ โ–Œโ–Œโ–Œ โ–Œโ–Œโ–Œโ–Œ โ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œ โ–Œโ–Œโ–Œ โ–Œโ–Œ โ–Œ  โ–Œ  โ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œ โ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œ โ–Œโ–Œ โ–Œโ–Œโ–Œโ–Œโ–Œ โ–Œโ–Œโ–Œโ–Œ โ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œ โ–Œโ–Œโ–Œ โ–Œโ–Œโ–Œ  โ–Œโ–Œโ–Œโ–Œ
โ–Œโ–Œโ–Œโ–Œโ–Œ โ–Œโ–Œโ–Œโ–Œ โ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œ โ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œ โ–Œโ–Œ โ–Œ โ–Œโ–Œ  โ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œ โ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œ โ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œโ–Œ
>>> import plainchart
>>> import math
>>> import numpy as np
>>>
>>> values = [1.3 + math.sin(x) for x in np.linspace(0, 4 * math.pi, num=100)]
>>> chart = plainchart.PlainChart(values, style=plainchart.PlainChart.scatter)
>>>
>>> print(chart.render())

         ร—ร—ร—ร—ร—ร—ร—ร—                                          ร—ร—ร—ร—ร—ร—ร—
      ร—ร—ร—        ร—ร—ร—                                    ร—ร—ร—       ร—ร—ร—
    ร—ร—              ร—ร—                               ร—ร—ร—             ร—ร—
  ร—ร—                  ร—ร—                            ร—                  ร—ร—
ร—ร—                      ร—ร—                        ร—ร—                     ร—ร—                        ร—
                          ร—                     ร—ร—                         ร—ร—                    ร—ร—
                           ร—ร—                 ร—ร—                             ร—ร—                ร—ร—
                             ร—ร—ร—            ร—ร—                                 ร—ร—            ร—ร—
                                ร—ร—ร—     ร—ร—ร—ร—                                     ร—ร—ร—ร—    ร—ร—ร—ร—
                                   ร—ร—ร—ร—ร—                                             ร—ร—ร—ร—

You can also implement your own style of chart. Below is an example of a HTML chart (mean_html.py) with different colors for values below and above the mean.

import plainchart
import random
import statistics

def mean_html(chart, value, y):
	mean = statistics.mean(chart.values)
	mean_y = chart.y(mean)
	value_y = chart.y(value)

	if value_y <= mean_y:

		if y <= value_y:
			return '<span style="color:green">โ–Œ</span>'

		return '<span style="color:white">โ–Œ</span>'

	else:

		if y <= mean_y:
			return '<span style="color:green">โ–Œ</span>'

		elif y <= value_y:
			return '<span style="color:red">โ–Œ</span>'

		return '<span style="color:white">โ–Œ</span>'

values = [random.randint(0, 10) for _ in range(100)]
chart = plainchart.PlainChart(values, style=mean_html)

print(chart.render(new_line='<br>'))
$ python mean_html.py > mean.html

Mean HTML chart

Contribute

Please feel free to open an issue to propose a new feature or point out a bug. You can also fork the PlainChart repository and submit a pull request.

Support

PlainChart is free and under the MIT License. To support its development, you can make a donation to cash.me/$gduverger.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

plainchart-0.2.1.tar.gz (3.3 kB view details)

Uploaded Source

Built Distribution

plainchart-0.2.1-py3-none-any.whl (3.8 kB view details)

Uploaded Python 3

File details

Details for the file plainchart-0.2.1.tar.gz.

File metadata

  • Download URL: plainchart-0.2.1.tar.gz
  • Upload date:
  • Size: 3.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.0.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.7.0

File hashes

Hashes for plainchart-0.2.1.tar.gz
Algorithm Hash digest
SHA256 27b0aef82d2b80c76ecb3e00ad162daa9490945e6400d91ceab1c91643bfb81b
MD5 46990029a0c85af402c10970207b0df0
BLAKE2b-256 9afd97e94f5f4398d74597d23173e42819b03505a7dcc93c9d6cd95860e46a1d

See more details on using hashes here.

File details

Details for the file plainchart-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: plainchart-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 3.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.0.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.7.0

File hashes

Hashes for plainchart-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ef99c009dfef2cd7e5dd28fef01e284f337bb22ca4b499dfcaa8bdd819164c19
MD5 314ab8b04e95a3a566c64d930d78cb17
BLAKE2b-256 040550ff85624076396dbc1bc3569d495d89fe68c2506f6c7e3240edf9876334

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page