Future Plan
plotext 6.x, kept here as inspiration rather than committed work, unless an Issue is linked, which marks something somebody has already asked for.Bug Fixes
Business days: an optional date axis skipping weekends, and holidays, so that a series of trading days shows no flat gaps between them (Issue 148).
Bars meeting at zero: a bar runs from zero to its value, so a positive and a negative bar of the same plot both paint the zero column, and the two touch. Drawing them from either side of that column, leaving it to a zero line, would separate them, at the cost of half a character of accuracy on every bar (Pull Request 222, which solved the same matter in version 5 by assembling each row as text).
Limits as a wall: a point just outside the
limitsis still drawn on the edge row, because the defaultalignmentcenters each value in its character, leaving half a character of tolerance beyond the range asked for. Pinning them withalignment(lim = "edge")works today; the same strictness should hold with the centered alignment too, which means selecting the points against the limits instead of against the canvas (Issue 185).
Settings
Changing the defaults: every default sits in defaults.py, from the marker used when none is given to the first x coordinate of a plot drawn from a single list of values, 1 rather than 0, as Issue 176 asked. A method setting any of them by name, as
plotext.default("first x", 0), would let a user pick their own once, instead of repeating the choice at every call.
Plots
Color bar: an optional bar beside the heatmap, pairing the color gradient with the values it spans, so that a color can be read back as a number.
Networks: a plot of nodes and of the edges joining them, with a rule placing the nodes on the canvas (Issue 160). The drawing is already possible by hand, an edge being a
segment()and a node atext(); what is missing is the placing rule, deciding where each node goes.Tables: a plain text table, distinct from the heatmap and the confusion matrix, which color cells instead of aligning text.
Date errors:
error()accepts numbers only, since it adds and halves its coordinates; date coordinates would need the horizontal errors written as durations, 2 days rather than a date, with a conversion of their own.Gifs and videos in a plot: a still picture goes inside a plot with
figure.image(), but a gif and a video cannot:plotext.gif()andplotext.video()take over the whole terminal, so neither can sit in a panel beside other plots. Afigure.gif()and afigure.video()would draw one picture per frame into the panel, which is what a user has to write by hand today.Event colors:
event()paints every line with one pixel; a list of pixels, one per event, would match whatbar()already accepts per group.
Signals
A title over a grid:
figure.title()on a figure divided into subplots does not title the grid, it copies the title into every panel, since only a plot with a canvas has a row for it. A heading over the whole grid would need a row of its own above the panels.Axis sides: replace the
xsideandysideparameters of the drawing methods with methods setting them on the returned signal. It is blocked by the date conversion, which happens when the signal is created and reads settings held per axis side: those settings would have to move to the axis itself.line()andevent()draw on the figure without returning a signal, so they would keep their parameters.Bent lines: a line plot whose characters turn with it,
╭ ╮ ╰ ╯where it changes row and│between them, the look of asciichart, asked for in Issue 199. The pieces are already there: the box marker takes its four arms separately, and arms accumulate when two of them land on the same character, so the work is to give each point of a connecting line the arms pointing at its neighbours, inside the kernel, where the points are already counted in canvas characters.Cell positions:
line()andlegend()already take arelativesetting, counting their position in canvas cells instead of data units. The same setting on a signal, and ontext()first of all, would pin a drawing to a place on the screen that the data and the limits cannot move; it needs the setting on the C++ signal, and the skip of the data to cell conversion when it is on.
Terminals
Asking the terminal: the higher resolution codes may not draw on a rare terminal, and
plotexthas no way of knowing beforehand; asking the terminal which characters it can draw would let each system pick the finest marker it can show, rather than the safest one.Clickable plots: reading the mouse, so that a point can be picked on the plot (Issue 175); hard on a plain terminal.
Command line completion: pressing TAB after
plotext --could list the methods, as version 5 did for its subcommands; the list is already there, since –methods prints every reachable method.