A simple text-only chart generator
Project description
textchart
Dead-simple tools for generating pure-text bargraphs and scatterplots
Usage
Utility Objects
FORMATTERS
FORMATTER.num
: round to the nearest .1FORMATTER.round
: round to the nearest integer
SCALE FUNCTIONS
SCALE_FN.linear
: linear scale axisSCALE_FN.log
: log scale axis
SORTING FUNCTIONS
SORTER.default
: keeps order from iterating through label_value_pairsSORTER.identity
: default python sortingSORTER.alphabetical
: sort alphabeticallySORTER.lookup_list(l)
: creates a sort function that preserves the order in listl
API
Functions
add_border
(
string,
max_width=None,
fit=False,
box_chars='│┐└┘┌─',
bold=False
)
Parameters:
string
: the stringmax_width
: if set, text will wrap if it exceeds a given width.- defaults to
80
- defaults to
fit
: if True, the border will be fit tightly to the text. If False, the border will have width max_width.- defaults to
False
- defaults to
box_chars
: the text symbols for horizontal, top-right, bottom-left, bottom-right, top-left, and vertical border parts.- defaults to
│┐└┘┌─
- defaults to
bold
: if set, replaces the default box chars│┐└┘┌─
, with bold glyfs┃┓┗┛┏━
- defaults to
False
- defaults to
example:
>> add_border("this is a very long test string", max_width=10)
┌───────────┐
│ this is a │
│ very long │
│ test │
│ string │
└───────────┘
bar_graph
(
label_value_pairs,
filler_char='■',
sorter=SORTERS.identity,
max_width=40,
horizontal=True,
size_labels=True,
border=False,
title=''
)
Parameters:
label_value_pairs
: a list of pairs or a dict mapping labels to valuesfiller_char
: the character to use as a filler- default ■
sorters
: a function that sorts the labels along the axis.- default
SORTERS.identity
- default
horizontal
: sets the orientation of the graph. Currently only horizontal bars are available- default True
size_labels
: if true, includes the value as text at the top of each bar- default True
example:
>> bar_graph({1:17, "2":3, "3 & OTHER": 1, 5: 16})
1: ■■■■■■■■■■■■■■■■■■■■■■ 17
2: ■■■■ 3
3: ■■■■■■■■■■■■■ 10
3 & OTHER: ■ 1
5: ■■■■■■■■■■■■■■■■■■■■■ 16
scatterplot
(
xy,
border=False
glyphs='.x*',
height=15,
show_key=True,
title=None,
unit_block=' ',
width=40,
x_formatter=FORMATTER.num,
x_label='',
x_range=None,
x_scale_fn=SCALE_FN.linear,
x_ticks=5,
y_formmatter=FORMATTER.num,
y_label='',
y_range=None,
y_scale_fn=SCALE_FN.linear,
y_ticks=5,
)
Parameters:
xy
: a set of xy pairsx_range
: an optional pair setting the maximum and minimum values for the x axisy_range
: an optional pair setting the maximum and minimum values for the y axisheight
: an optional value setting the height of the y axiswidth
: an optional value setting the width of the x axisx_scale_fn
: an optional scale function, which takes (min_, max_, steps, current_step) as inputs and returns the scalar value of the begginning of that step. SCALE_FN.log is available.- Defaults to SCALE_FN.linear
y_scale_fn
: an optional scale function, which takes (min_, max_, steps, current_step) as inputs and returns the scalar value of the begginning of that step. SCALE_FN.log is available.- Defaults to SCALE_FN.linear
x_label
: the label for the x axisy_label
: the label for the y axisglyphs
: a set of symbols to use to represent overlapping points.- defaults to ".x*"
- NOTE: on some monitors,
・•●
may improve clarity, but can also cause rendering errors due to variable width characters.
unit_block
: sets the "background" for the chart. Used as the unit for combuting width.x_ticks
: the number of "ticks" along the x axisy_ticks
: the number of "ticks" along the y axisshow_key
: self explanatory.
Example:
>> # generating some random data
>> data = [
(random.normalvariate(50, 5)*random.randint(1,3), random.normalvariate(3, 1))
for _ in range(400)
]
>> # Plot command:
>> scatterplot(
data,
title='test title',
x_label='number of X values',
y_label='number of\nunits of\nY value',
border=True)
┌─────────────────────────────────────────────────────────────────────────────────────┐
│ test title │
│ │
│ 6.7┨ ┌────────────────────┐ │
│ ┃ │ ".": 1 - 3 points │ │
│ ┃ . . │ "x": 4 - 6 points │ │
│ ┃ . . . . │ "*": 7 - 10 points │ │
│ 4.7┨ .x . . ... . └────────────────────┘ │
│ ┃ .x.. . .x. .. ... .. .. │
│ number of ┃ .xx. ....xx... .......... │
│ units of ┃ .**. . ....xx......x..x... │
│ Y value 2.8┨ .**x .. x.**x......xxx.. . │
│ ┃ **x . ..*.. x.. x xx... │
│ ┃ ...x ..*... ....... . . │
│ ┃ .... . . . .. ....... .. │
│ 0.8┨ . . . . . │
│ ┃ . . . . │
│ ┃ . .. . │
│ ┃ │
│ -0.7╄━━━━━━┯━━━━━━━━┯━━━━━━━━┯━━━━━━━━┯━━━━━━━┯ │
│ 0.0 30.0 75.1 120.1 165.1 205.2 │
│ │
│ number of X values │
└─────────────────────────────────────────────────────────────────────────────────────┘
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
textchart-0.0.1a0.tar.gz
(9.3 kB
view hashes)
Built Distribution
Close
Hashes for textchart-0.0.1a0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ccea710a20dd2772e9c5974cd8cde4bb6b5b09d410e2f87939b49b731029bb11 |
|
MD5 | 9626ffe1b4174f407fc3440711ce0ada |
|
BLAKE2b-256 | 783d2409ccb0005d476763fc6deae15abb63d1407e6faac2c3120425a084f11e |