README-work

Raku Text::Plot

This repository has a Raku package for textual (terminal) plots.

Here is the list of functions:

  • text-list-plot

  • text-plot

  • text-bar-chart

Currently only text-list-plot is implemented.

It would be nice to also have the functions:

  • text-density-plot

  • text-box-plot

But that would require dependency on a certain statistical package. (I think it is best to keep this package simple.)

Installation

From zef-ecosystem:

zef install Text::Plot

From GitHub:

zef install https://github.com/antononcube/Raku-Text-Plot.git

Usage examples

Simple plot with y-values only:

use Text::Plot;
say text-list-plot((^30)>>.sqrt);

Plot using both x- and y-values, and with specified axes labels, plot width, height, and title:

my @xs = (0, 0.1 ... 5);
say text-list-plot(@xs,  @xs>>.sin, xLabel => 'x-points', yLabel => 'value', width => 100, height => 30, title => 'SINE PLOT');

Smallish plot with custom point character spec:

my @xs = (0, 0.05 ... 10);
say text-list-plot(@xs, -1 <<*>> @xs>>.sqrt, point-char => 'ยท', xLabel => 'some range', yLabel => 'sqrt', width => 40, height => 12);

Implementation notes

  • The package functions and their signatures design are easy to come up with, but it is very helpful to have a "good example" to follow.

    • I consider the R-package "txtplot", [BB1], to be such good example.

    • There at least three Python packages for text plots, but only tried them out once. None was as complete and "nice" as the R-package "txtplot".

  • The points and ticks are rescaled with a version of the Mathematica-function Rescale.

  • The axes ticks are computed with a version of the R-function pretty.

TODO

  • Plotting a list of two-element lists.

  • Make the axes ticks to be on the left.

    • It was just much easier to put them on the right.

    • BTW, this is probably a bug -- the width of "total plot" is larger than the specified.

  • Optional placement tick values.

  • Plot title.

    • I am not sure is it needed.

  • text-plot

    • Easy to implement inlined with text-plot, but it might give a simpler interface.

  • text-bar-chart

  • CLI design and implementation

  • Multi-lines plot support.

References

[BB1] Bjoern Bornkamp, txtplot R package, (CRAN), (2020), GitHub/bbnkmp.

Text::Plot v0.0.1

Text plots.

Authors

  • Anton Antonov

License

Artistic-2.0

Dependencies

Test Dependencies

Provides

  • Text::Plot

The Camelia image is copyright 2009 by Larry Wall. "Raku" is trademark of the Yet Another Society. All rights reserved.