Plotter Library Reference
The plotter library in EasyBite provides a stateful, high-level API for creating a wide variety of charts—line plots, histograms, bar and pie charts, and more—by leveraging the [Plotters] crate for rendering and minifb for on-screen display. Scripts record drawing commands against a thread-local Figure, then invoke showplot, showimage, or savefig to produce the final output. All functions return Result types, so errors (such as missing figures or mismatched array lengths) are surfaced cleanly instead of crashing the runtime.
| Function | Parameters | Description |
|---|---|---|
| FIGURE & AXES | ||
figure | ([width, height]) (Number, optional) | Create a new canvas. Defaults to 800×600 if omitted. |
title | ([text]) (String) | Set the figure’s title. |
xlabel | ([text]) (String) | Set the x-axis label. |
ylabel | ([text]) (String) | Set the y-axis label. |
legend | ([show]) (Bool, optional) | Toggle legend display. Defaults to true if no arg. |
grid | ([show]) (Bool, optional) | Toggle grid lines. Defaults to true if no arg. |
clear | ([]) | Clear the current figure (drops all settings & commands). |
subplots | ([nrows, ncols]) (Number, both required) | Divide canvas into an nrows×ncols grid of subplots. |
| BASIC PLOTTING | ||
plot | ([x: Array, y: Array, color?: String]) | Draw a line through points (x[i], y[i]). Default color "blue". |
scatter | ([x: Array, y: Array, color?: String]) | Draw markers at (x[i], y[i]). Default color "red". |
histogram | ([data: Array, bins?: Number, color?: String]) | Plot a histogram of data into bins buckets. Defaults: 10 bins, color "green". |
bar | ([categories: Array, values: Array, color?: String]) | Draw vertical bars at each category. Default color "blue". |
pie | ([labels: Array, data: Array, colors?: Array]) | Draw a pie chart. If colors omitted, cycles ["red","blue",…]. |
| ADVANCED & SPECIALIZED | ||
step | ([x: Array, y: Array, color?: String]) | Draw a step plot. Default color "blue". |
area | ([x: Array, y: Array, color?: String]) | Draw a filled area under the (x, y) curve. Default "blue". |
boxplot | ([data: Array<Array>, labels?: Array, color?: String]) | Draw one or more box-and-whisker plots. Default "purple". |
violin | ([data: Array<Array>, labels?: Array, color?: String]) | Draw violin distributions. Default "blue". |
errorbar | ([x: Array, y: Array, yerr: Array, color?: String]) | Draw error bars at (x[i], y[i]) with ±yerr[i]. Default "black". |
heatmap | ([data: Array<Array>, color?: String]) | Render a heatmap of the matrix. Default "blue". |
contour | ([data: Array<Array>, x_range: Tuple, y_range: Tuple, color: String]) | Draw contour lines. Requires explicit color. |
quiver | ([x: Array, y: Array, u: Array, v: Array, color?: String]) | Draw arrows at (x[i],y[i]) with components (u[i],v[i]). Default "black". |
stem | ([x: Array, y: Array, marker_color?: String, line_color?: String]) | Draw stems with markers. Defaults: marker "black", line "blue". |
bubble | ([x: Array, y: Array, sizes: Array, color?: String]) | Draw circles at (x[i], y[i]) sized by sizes[i]. Default "blue". |
stackedbar | ([categories: Array, values: Array<Array>, colors?: Array]) | Draw stacked bars. If colors omitted, cycles defaults. |
polar | ([theta: Array, r: Array, color?: String]) | Draw in polar coordinates. Default "blue". |
candlestick | ([times: Array, open: Array, high: Array, low: Array, close: Array, color_up?: String, color_down?: String]) | Draw candlestick chart. Default up "green", down "red". |
radar | ([labels: Array, data: Array<Array>, color?: String]) | Draw radar/spider chart. Default "blue". |
waterfall | ([x_labels: Array, values: Array, color?: String]) | Draw waterfall chart. Default "blue". |
| OUTPUT & RENDER | ||
savefig | ([path]) (String) | Save current figure as PNG. |
showplot | ([]) | Render figure in an interactive window (blocks until closed). |
showimage | ([path]) (String) | Load & display an image file in a window. |
Detailed Examples
1. Simple Line Plot
import plotter
plotter.figure() // 800×600 canvas
plotter.plot([ [0,1,2], [3,1,4], "red" ]) // red line
plotter.title([ "Monthly Sales" ])
plotter.xlabel([ "Month" ])
plotter.ylabel([ "Sales ($k)" ])
plotter.legend([]) // show legend
plotter.showplot()
Output:
Interactive window showing a red line through (0,3), (1,1), (2,4), with title and axis labels.
2. Histogram with Custom Bins
import plotter
set data to [1,2,2,3,5,5,6,7,8,9]
plotter.figure([600, 400]) // 600×400 canvas
plotter.histogram([ data, 5, "purple" ]) // 5-bin purple histogram
plotter.grid([]) // show grid lines
plotter.savefig([ "hist.png" ]) // save to file
Output:
File hist.png: a 600×400 purple histogram with 5 bins and grid lines.
3. Pie Chart
import plotter
set labels to [ "A", "B", "C", "D" ]
set values to [ 10, 20, 30, 40 ]
plotter.figure() // new canvas
plotter.pie([ labels, values ]) // default colors cycle
plotter.showplot()
Output:
A pie chart window with four slices sized 10%, 20%, 30%, 40% in default colors.
4. Box Plot of Two Distributions
import plotter
plotter.figure()
plotter.boxplot([
[[1,2,3,4], [2,3,5,7]], // two series
["A","B"], // labels
"orange" // color
])
plotter.showplot()
Output:
Two side-by-side orange boxplots labeled A and B.
5. Heatmap with Default Color
import plotter
set mat to [
[1,3,2],
[4,6,5],
[7,9,8]
]
plotter.figure([300,300])
plotter.heatmap([ mat ])
plotter.savefig([ "heatmap.png" ])
Output:
A 300×300 PNG heatmap of mat in blue scale.
6. Contour Lines over a Grid
import plotter, math
declare z[10][10]
for i from 0 to 9
for j from 0 to 9
z[i][j] to math.sin(i / 2) * math.cos(j / 3)
end for
end for
plotter.figure()
plotter.contour([ z, [0,9], [0,9], "black" ])
plotter.showplot()
Output:
Black contour lines of the 2D sine-cosine surface.
7. Financial Candlestick Chart
import plotter
let dates = ["2025-04-01","2025-04-02","2025-04-03"]
let open = [100, 102, 101]
let high = [105, 103, 102]
let low = [ 98, 100, 99]
let close = [103, 100, 101]
plotter.figure()
plotter.candlestick([ dates, open, high, low, close ]) // green up, red down
plotter.showplot()
Output:
A candlestick chart window showing three trading days with default green/red coloring.
8. Error Bar Plot
import plotter
set x to [0, 1, 2, 3]
set y to [2, 3, 1, 4]
set yerr to [0.5, 0.3, 0.2, 0.4]
plotter.figure()
plotter.errorbar([ x, y, yerr, "magenta" ])
plotter.showplot()
9. Quiver Field
import plotter
set x to [0, 1, 2]
set y to [0, 1, 0]
set u to [1, 0, -1]
set v to [0, 1, 0]
plotter.figure()
plotter.quiver([ x, y, u, v ])
plotter.showplot()
10. Area Chart
import plotter
set x to [0, 1, 2, 3]
set y to [1, 4, 2, 5]
plotter.figure()
plotter.area([ x, y, "teal" ])
plotter.showplot()
11. Step Plot
import plotter
set x to [0, 1, 2, 3]
set y to [2, 1, 3, 2]
plotter.figure()
plotter.step([ x, y ])
plotter.showplot()
12. Violin Plot
import plotter
set data2d to [
[1,2,3,2,1],
[2,3,4,3,2]
]
plotter.figure()
plotter.violin([ data2d, ["A","B"], "cyan" ])
plotter.showplot()
13. Stem Plot
import plotter
set x to [0, 1, 2]
set y to [1, 3, 2]
plotter.figure()
plotter.stem([ x, y, "red", "black" ])
plotter.showplot()
14. Bubble Chart
import plotter
set x to [1, 2, 3]
set y to [2, 4, 1]
set sizes to [10, 40, 20]
plotter.figure()
plotter.bubble([ x, y, sizes, "orange" ])
plotter.showplot()
15. Stacked Bar Chart
import plotter
set cats to ["Q1","Q2","Q3"]
set vals2d to [
[3, 5, 2],
[2, 1, 4]
]
plotter.figure()
plotter.stackedbar([ cats, vals2d ])
plotter.showplot()
16. Polar Plot
import plotter
set theta to [0, 1.57, 3.14]
set r to [1, 2, 1]
plotter.figure()
plotter.polar([ theta, r, "purple" ])
plotter.showplot()
17. Radar Chart
import plotter
set labels to ["Speed","Power","Agility"]
set stats2d to [
[5, 7, 6]
]
plotter.figure()
plotter.radar([ labels, stats2d, "green" ])
plotter.showplot()
18. Waterfall Chart
import plotter
set steps to ["Start","Gain","Loss","End"]
set values to [100, 30, -20, 110]
plotter.figure()
plotter.waterfall([ steps, values, "brown" ])
plotter.showplot()