๐Ÿ“Š Charts with pure python

Overview

chart

MIT Travis PyPI Downloads

A zero-dependency python package that prints basic charts to a Jupyter output

Charts supported:

  • Bar graphs
  • Scatter plots
  • Histograms
  • ๐Ÿ‘ ๐Ÿ“Š ๐Ÿ‘

Examples

Bar graphs can be drawn quickly with the bar function:

from chart import bar

x = [500, 200, 900, 400]
y = ['marc', 'mummify', 'chart', 'sausagelink']

bar(x, y)
       marc: โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡             
    mummify: โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡                       
      chart: โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡
sausagelink: โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡โ–‡                              

And the bar function can accept columns from a pd.DataFrame:

from chart import bar
import pandas as pd

df = pd.DataFrame({
    'artist': ['Tame Impala', 'Childish Gambino', 'The Knocks'],
    'listens': [8_456_831, 18_185_245, 2_556_448]
})
bar(df.listens, df.artist, width=20, label_width=11, mark='๐Ÿ”Š')
Tame Impala: ๐Ÿ”Š๐Ÿ”Š๐Ÿ”Š๐Ÿ”Š๐Ÿ”Š๐Ÿ”Š๐Ÿ”Š๐Ÿ”Š๐Ÿ”Š           
Childish Ga: ๐Ÿ”Š๐Ÿ”Š๐Ÿ”Š๐Ÿ”Š๐Ÿ”Š๐Ÿ”Š๐Ÿ”Š๐Ÿ”Š๐Ÿ”Š๐Ÿ”Š๐Ÿ”Š๐Ÿ”Š๐Ÿ”Š๐Ÿ”Š๐Ÿ”Š๐Ÿ”Š๐Ÿ”Š๐Ÿ”Š๐Ÿ”Š๐Ÿ”Š
 The Knocks: ๐Ÿ”Š๐Ÿ”Š๐Ÿ”Š                                

Histograms are just as easy:

from chart import histogram

x = [1, 2, 4, 3, 3, 1, 7, 9, 9, 1, 3, 2, 1, 2]

histogram(x)
โ–‡        
โ–‡        
โ–‡        
โ–‡        
โ–‡ โ–‡      
โ–‡ โ–‡      
โ–‡ โ–‡      
โ–‡ โ–‡     โ–‡
โ–‡ โ–‡     โ–‡
โ–‡ โ–‡   โ–‡ โ–‡

And they can accept objects created by scipy:

from chart import histogram
import scipy.stats as stats
import numpy as np

np.random.seed(14)
n = stats.norm(loc=0, scale=10)

histogram(n.rvs(100), bins=14, height=7, mark='๐Ÿ‘')
            ๐Ÿ‘              
            ๐Ÿ‘   ๐Ÿ‘          
            ๐Ÿ‘ ๐Ÿ‘ ๐Ÿ‘          
            ๐Ÿ‘ ๐Ÿ‘ ๐Ÿ‘          
        ๐Ÿ‘   ๐Ÿ‘ ๐Ÿ‘ ๐Ÿ‘          
      ๐Ÿ‘ ๐Ÿ‘ ๐Ÿ‘ ๐Ÿ‘ ๐Ÿ‘ ๐Ÿ‘ ๐Ÿ‘ ๐Ÿ‘ ๐Ÿ‘    
      ๐Ÿ‘ ๐Ÿ‘ ๐Ÿ‘ ๐Ÿ‘ ๐Ÿ‘ ๐Ÿ‘ ๐Ÿ‘ ๐Ÿ‘ ๐Ÿ‘   ๐Ÿ‘

Scatter plots can be drawn with a simple scatter call:

from chart import scatter

x = range(0, 20)
y = range(0, 20)

scatter(x, y)
                                       โ€ข
                                   โ€ข โ€ข  
                                 โ€ข      
                             โ€ข โ€ข        
                         โ€ข โ€ข            
                       โ€ข                
                  โ€ข  โ€ข                  
                โ€ข                       
            โ€ข โ€ข                         
        โ€ข โ€ข                             
      โ€ข                                 
  โ€ข โ€ข                                   
โ€ข                                       

And at this point you gotta know it works with any np.array:

from chart import scatter
import numpy as np

np.random.seed(1)
N = 100
x = np.random.normal(100, 50, size=N)
y = x * -2 + 25 + np.random.normal(0, 25, size=N)

scatter(x, y, width=20, height=9, mark='^')
^^                  
 ^                  
    ^^^             
    ^^^^^^^         
       ^^^^^^       
        ^^^^^^^     
            ^^^^    
             ^^^^^ ^
                ^^ ^

In fact, all chart functions work with pandas, numpy, scipy and regular python objects.

Preprocessors

In order to create the simple outputs generated by bar, histogram, and scatter I had to create a couple of preprocessors, namely: NumberBinarizer and RangeScaler.

I tried to adhere to the scikit-learn API in their construction. Although you won't need them to use chart here they are for your tinkering:

from chart.preprocessing import NumberBinarizer

nb = NumberBinarizer(bins=4)
x = range(10)
nb.fit(x)
nb.transform(x)
[0, 0, 0, 1, 1, 2, 2, 3, 3, 3]
from chart.preprocessing import RangeScaler

rs = RangeScaler(out_range=(0, 10), round=False)
x = range(50, 59)
rs.fit_transform(x)
[0.0, 1.25, 2.5, 3.75, 5.0, 6.25, 7.5, 8.75, 10.0]

Installation

pip install chart

Contribute

For feature requests or bug reports, please use Github Issues

Inspiration

I wanted a super-light-weight library that would allow me to quickly grok data. Matplotlib had too many dependencies, and Altair seemed overkill. Though I really like the idea of termgraph, it didn't really fit well or integrate with my Jupyter workflow. Here's to chart ๐Ÿฅ‚ (still can't believe I got it on PyPI)

Owner
Max Humber
Human
Max Humber
๐ŸŽจ Python Echarts Plotting Library

pyecharts Python โค๏ธ ECharts = pyecharts English README ๐Ÿ“ฃ ็ฎ€ไป‹ Apache ECharts (incubating) ๆ˜ฏไธ€ไธช็”ฑ็™พๅบฆๅผ€ๆบ็š„ๆ•ฐๆฎๅฏ่ง†ๅŒ–๏ผŒๅ‡ญๅ€Ÿ็€่‰ฏๅฅฝ็š„ไบคไบ’ๆ€ง๏ผŒ็ฒพๅทง็š„ๅ›พ่กจ่ฎพ่ฎก๏ผŒๅพ—ๅˆฐไบ†ไผ—ๅคšๅผ€ๅ‘่€…็š„่ฎคๅฏใ€‚่€Œ Python ๆ˜ฏไธ€้—จๅฏŒๆœ‰่กจ่พพ

pyecharts 13.1k Jan 03, 2023
This is a small repository for me to implement my simply Data Visualisation skills through Python.

Data Visualisations This is a small repository for me to implement my simply Data Visualisation skills through Python. Steam Population Chart from 10/

9 Dec 31, 2021
Parse Robinhood 1099 Tax Document from PDF into CSV

Robinhood 1099 Parser This project converts Robinhood Securities 1099 tax document from PDF to CSV file. This tool will be helpful for those who need

Keun Tae (Kevin) Park 52 Jun 10, 2022
This GitHub Repository contains Data Analysis projects that I have completed so far! While most of th project are focused on Data Analysis, some of them are also put here to show off other skills that I have learned.

Welcome to my Data Analysis projects page! This GitHub Repository contains Data Analysis projects that I have completed so far! While most of th proje

Kyle Dini 1 Jan 31, 2022
Realtime Viewer Mandelbrot set with Python and Taichi (cpu, opengl, cuda, vulkan, metal)

Mandelbrot-set-Realtime-Viewer- Realtime Viewer Mandelbrot set with Python and Taichi (cpu, opengl, cuda, vulkan, metal) Control: "WASD" - movement, "

22 Oct 31, 2022
Draw tree diagrams from indented text input

Draw tree diagrams This repository contains two very different scripts to produce hierarchical tree diagrams like this one: $ ./classtree.py collectio

Luciano Ramalho 8 Dec 14, 2022
Sentiment Analysis application created with Python and Dash, hosted at socialsentiment.net

Social Sentiment Dash Application Live-streaming sentiment analysis application created with Python and Dash, hosted at SocialSentiment.net. Dash Tuto

Harrison 456 Dec 25, 2022
Make sankey, alluvial and sankey bump plots in ggplot

The goal of ggsankey is to make beautiful sankey, alluvial and sankey bump plots in ggplot2

David Sjoberg 156 Jan 03, 2023
๐Ÿ—พ Streamlit Component for rendering kepler.gl maps

streamlit-keplergl ๐Ÿ—พ Streamlit Component for rendering kepler.gl maps in a streamlit app. ๐ŸŽˆ Live Demo ๐ŸŽˆ Installation pip install streamlit-keplergl

Christoph Rieke 39 Dec 14, 2022
Create charts with Python in a very similar way to creating charts using Chart.js

Create charts with Python in a very similar way to creating charts using Chart.js. The charts created are fully configurable, interactive and modular and are displayed directly in the output of the t

Nicolas H 68 Dec 08, 2022
Automatically visualize your pandas dataframe via a single print! ๐Ÿ“Š ๐Ÿ’ก

A Python API for Intelligent Visual Discovery Lux is a Python library that facilitate fast and easy data exploration by automating the visualization a

Lux 4.3k Dec 28, 2022
A little word cloud generator in Python

Linux macOS Windows PyPI word_cloud A little word cloud generator in Python. Read more about it on the blog post or the website. The code is tested ag

Andreas Mueller 9.2k Dec 30, 2022
A Jupyter - Three.js bridge

pythreejs A Python / ThreeJS bridge utilizing the Jupyter widget infrastructure. Getting Started Installation Using pip: pip install pythreejs And the

Jupyter Widgets 844 Dec 27, 2022
Simple implementation of Self Organizing Maps (SOMs) with rectangular and hexagonal grid topologies

py-self-organizing-map Simple implementation of Self Organizing Maps (SOMs) with rectangular and hexagonal grid topologies. A SOM is a simple unsuperv

Jonas Grebe 1 Feb 10, 2022
Friday Night Funkin - converts a chart from 4/4 time to 6/8 time, or from regular to swing tempo.

Chart to swing converter As seen in https://twitter.com/i_winxd/status/1462220493558366214 A program written in python that converts a chart from 4/4

5 Dec 23, 2022
Sparkling Pandas

SparklingPandas SparklingPandas aims to make it easy to use the distributed computing power of PySpark to scale your data analysis with Pandas. Sparkl

366 Oct 27, 2022
demir.ai Dataset Operations

demir.ai Dataset Operations With this application, you can have the empty values (nan/null) deleted or filled before giving your dataset to machine le

Ahmet Furkan DEMIR 8 Nov 01, 2022
Some problems of SSLC ( High School ) before outputs and after outputs

Some problems of SSLC ( High School ) before outputs and after outputs 1] A Python program and its output (output1) while running the program is given

Fayas Noushad 3 Dec 01, 2021
Generate a 3D Skyline in STL format and a OpenSCAD file from Gitlab contributions

Your Gitlab's contributions in a 3D Skyline gitlab-skyline is a Python command to generate a skyline figure from Gitlab contributions as Github did at

Fรฉlix Gรณmez 70 Dec 22, 2022
Visualizations for machine learning datasets

Introduction The facets project contains two visualizations for understanding and analyzing machine learning datasets: Facets Overview and Facets Dive

PAIR code 7.1k Jan 07, 2023