Skip to content

Latest commit

Β 

History

History

python

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Table of Contents

Tables

Usage

Requires Python 3.6 or greater and if not on Linux or macOS, the wcwidth library, which users can install with:

pip3 install wcwidth
# or
python3 -m pip install wcwidth

See the tables.py file for full usage information.

Complete versions of all of the examples below and more can be found in the __main__.py file.

Run with: python3 -OO ..

Output str array as table

import tables

# Set array

tables.array(array, headerrow=True, headercolumn=True)

Table cells can contain Unicode characters and formatted text with ANSI escape sequences, but not newlines and tabs.

Output array as table with separate header row and column

import tables

headerrow = ["Header row/column 1", "Header row 2", "Header row 3", "Header row 4", "Header row 5"]
headercolumn = ["Header column 2", "Header column 3", "Header column 4", "Header column 5"]

# Set array

tables.array(array, headerrow, headercolumn, headerrow=True, headercolumn=True)

Output same as example above.

Output array as table

import tables

# Set array, can be any sequence data type

tables.array(array)

Output sorted array as table

import tables

# Set array

sortdimension = 0  # Column to sort by

array = sorted(array, key=lambda x: x[sortdimension])

tables.array(array)

Output single function as table

import tables

def afunction(x):
	return x + 1

xmin = -10
xmax = 10
xstep = 0.5

tables.function(xmin, xmax, xstep, afunction, headerrow=True)

Output lambda function as table

import tables

xmin = -10
xmax = 10
xstep = 0.5

afunction = lambda x: x + 1

tables.function(xmin, xmax, xstep, afunction, headerrow=True)

Output same as example above.

Output multiple functions as table

import tables

def function1(x):
	return 2 * x

def function2(x):
	return x ** 2

xmin = -10
xmax = 10
xstep = 0.5

# Function parameter and return value can be any data type, as long as they are the same
functions = [function1, function2]

tables.functions(xmin, xmax, xstep, functions, headerrow=True)

Output multiple lambda functions as table

import tables

xmin = -10
xmax = 10
xstep = 0.5

# Function parameter and return value can be any data type, as long as they are the same
functions = [lambda x: 2 * x, lambda x: x ** 2]

tables.functions(xmin, xmax, xstep, functions, headerrow=True)

Output same as example above.

Options

Header row

Option: headerrow
Default value: False

Header rows are bolded, centered and have a border.

Header column

Option: headercolumn
Default value: False

Header columns are bolded, centered and have a border.

Table border

Option: tableborder
Default value: True

Cell border

Option: cellborder
Default value: False

Cell padding

Option: padding
Default value: 1

Format and Alignment

Option: alignment
Values:

  • "" (default)
  • "<" (left)
  • ">" (right)
  • "=" (internal, numeric types only)
  • "^" (center)

See the Python documentation for the full available options.

Title

Option: title
Default value: None

The title is output at the top of the table. It is word wrapped based on the current width of the terminal. Handles newlines, tabs and Unicode characters.

Border style

Option: style
Values:

  1. style_types.ASCII: ASCII
  2. style_types.basic: Basic
  3. style_types.light: Light (default)
  4. style_types.heavy: Heavy
  5. style_types.double: Double
  6. style_types.arc: Light Arc
  7. style_types.light_dashed: Light Dashed
  8. style_types.heavy_dashed: Heavy Dashed

Output file

Option: file
Values:

  • sys.stdout (default)
  • sys.stderr

Any other text file object.

Check size

Option: check
Default value: True

Check that the width of the table is not greater then the width of the terminal.

Graphs/Plots

Usage

Requires Python 3.6 or greater and if not on Linux or macOS, the wcwidth library, which users can install with:

pip3 install wcwidth
# or
python3 -m pip install wcwidth

See the graphs.py file for full usage information.

Complete versions of all of the examples below and more can be found in the __main__.py file.

Run with: python3 -OO ..

If height is 0, it will be set to the current height of the terminal (number of rows). If width is 0, it will be set to the current width of the terminal (number of columns).

Output array as histogram

import graphs

height = 40
width = 80

xmin = -20
xmax = 20
ymin = -20
ymax = 20

# Set array, can be any sequence data type

graphs.histogram(height, width, xmin, xmax, ymin, ymax, array)

If xmin and xmax are both 0, they will be set to the respective minimum and maximum values of x in the array. If ymin and ymax are both 0, they will be set to the respective minimum and maximum values of y in the resulting histogram.

Output single array as plot

import graphs

height = 40
width = 80

xmin = -20
xmax = 20
ymin = -20
ymax = 20

# Set array, can be any sequence data type, but must have exactly two columns

graphs.plot(height, width, xmin, xmax, ymin, ymax, array)

If xmin and xmax are both 0, they will be set to the respective minimum and maximum values of x in the array. If ymin and ymax are both 0, they will be set to the respective minimum and maximum values of y in the array.

Use graphs.plots() to plot multiple arrays, which can be of different sizes.

Output single function as graph

import graphs

def afunction(x):
	return x + 1

height = 40
width = 80

xmin = -20
xmax = 20
ymin = -20
ymax = 20

graphs.function(height, width, xmin, xmax, ymin, ymax, afunction)

Output lambda function as graph

import graphs

height = 40
width = 80

xmin = -20
xmax = 20
ymin = -20
ymax = 20

afunction = lambda x: x + 1

graphs.function(height, width, xmin, xmax, ymin, ymax, afunction)

Output same as example above.

Output multiple functions as graph

import graphs

def function1(x):
	return 2 * x

def function2(x):
	return x ** 2

height = 40
width = 80

xmin = -20
xmax = 20
ymin = -20
ymax = 20

# Function parameter and return value can be any data type, as long as they are the same
functions = [function1, function2]

graphs.functions(height, width, xmin, xmax, ymin, ymax, functions)

Output multiple lambda functions as graph

import graphs

height = 40
width = 80

xmin = -20
xmax = 20
ymin = -20
ymax = 20

# Function parameter and return value can be any data type, as long as they are the same
functions = [lambda x: 2 * x, lambda x: x ** 2]

graphs.functions(height, width, xmin, xmax, ymin, ymax, functions)

Output same as example above.

Options

Border

Option: border
Default value: False

Axis

Option: axis
Default value: True

Axis labels

Option: axislabel
Default value: True

Requires axis to be True.

Axis tick marks

Option: axistick
Default value: True

Requires axis to be True.

Axis units labels

Option: axisunitslabel
Default value: True

Requires axis and axistick to be True.

X-axis units format

Option: xunits
Values:

  1. units_types.number: Locale number format
  2. units_types.scale_none: Locale number format with full precision
  3. units_types.scale_SI: Auto-scale to the SI standard
  4. units_types.scale_IEC: Auto-scale to the IEC standard
  5. units_types.scale_IEC_I: Auto-scale to the IEC standard
  6. units_types.fracts: Locale number format, but convert fractions and mathematical constants to Unicode characters (default)
  7. units_types.percent: Percentage format
  8. units_types.date: Locale date format
  9. units_types.time: Locale time format
  10. units_types.monetary: Locale monetary/currency format

Formats 2-5 are similar to the respective --to options with the numfmt command from GNU Coreutils, but with more precision.

Y-axis units format

Option: yunits
Values: Same as above.

Type

Option: type
Values:

  1. type_types.braille: Braille (default)
  2. type_types.block: Block
  3. type_types.block_quadrant: Block quadrant
  4. type_types.separated_block_quadrant: Separated block quadrant
  5. type_types.block_sextant: Block sextant
  6. type_types.separated_block_sextant: Separated block sextant
  7. type_types.block_octant: Block octant

The Braille and block octant types have the highest density of 2Γ—4 pixels per character, while the two block sextant types use 2Γ—3, the two block quadrant types use 2Γ—2 and the block type uses 1Γ—1. This option is only used for plots and graphs. Histograms use 1Γ—8 pixels per character.

The block sextant type requires support for Unicode 13.0, while the separated block quadrant, separated block sextant and block octant types require support for Unicode 16.0.

Mark type

Option: mark
Values:

  1. mark_types.dot: Dot (default)
  2. mark_types.plus: Plus
  3. mark_types.square: Square

The dot mark type uses a single pixel per mark, the plus uses five pixels and the square uses eight pixels. This option is only used for plots and graphs.

Title

Option: title
Default value: None

The title is output at the top of the graph. It is word wrapped based on the current width of the terminal. Handles newlines, tabs and Unicode characters.

Axis/Border style

Option: style
Values:

  1. style_types.ASCII: ASCII
  2. style_types.basic: Basic
  3. style_types.light: Light (default)
  4. style_types.heavy: Heavy
  5. style_types.double: Double
  6. style_types.arc: Light Arc
  7. style_types.light_dashed: Light Dashed
  8. style_types.heavy_dashed: Heavy Dashed

Graph/Plot Color

Option: color
Values:

  1. color_types.default: System default
  2. color_types.black: Black
  3. color_types.red: Red (default)
  4. color_types.green: Green
  5. color_types.yellow: Yellow
  6. color_types.blue: Blue
  7. color_types.magenta: Magenta
  8. color_types.cyan: Cyan
  9. color_types.white: White
  10. color_types.gray: Gray
  11. color_types.bright_red: Bright Red
  12. color_types.bright_green: Bright Green
  13. color_types.bright_yellow: Bright Yellow
  14. color_types.bright_blue: Bright Blue
  15. color_types.bright_magenta: Bright Magenta
  16. color_types.bright_cyan: Bright Cyan
  17. color_types.bright_white: Bright White

See here for examples of the colors.

This option is only used when plotting a single array and when graphing a single function. When plotting multiple arrays or graphing multiple functions, colors 2 - 16 are used inorder. The system default color is used where the plots cross.

Plot

Graph

Output file

Option: file
Values:

  • sys.stdout (default)
  • sys.stderr

Any other text file object.

Check size

Option: check
Default value: True

Check that the width and height of the graph are not greater then the respective width and height of the terminal.