Awesome
BQN-Gnuplot
A BQN wrapper script for Gnuplot on linux. Tested on CBQN.
Usage:
Import:
⟨Gnuplot⟩ ← •Import "Gnuplot.bqn"
Create a plot window:
plt ← Gnuplot @
When creating a plot you can include 'set' options as either a list of strings or a single string:
plt ← Gnuplot ⟨
"title 'Title'" # use '' instead of "" when needed
.
.
.
⟩
plt ← Gnuplot "
terminal pngcairo
output 'output.png'
.
.
.
"
Additional plot options can be given with .Set
and .Unset
:
plt.Set "
xlabel 'x'
ylabel 'f(x)'
"
plt.Unset "
key
"
Data is expect as a flat, rank 1 or 2 array, with major cells corresponding to lines in gnuplot's data format:
data1 ← >⟨ # points in major cells
0‿5
1‿6
2‿7
3‿8
⟩
data2 ← 8‿7‿6‿5
data3 ← >⟨
1‿2‿3‿4
1‿3‿5‿7
1‿4‿7‿10
1‿5‿9‿13
⟩
Use .Plot
(or .SPlot
for 3d plot types) to plot the data, giving options as a joined string:
plt.Plot data1‿"with lines"
plt.Plot data2
plt.SPlot data3‿"matrix with lines"
Data can also contain strings for uses such as labeling bar charts:
stringdata ← >⟨
"label A"‿3
"label B"‿7
"label C"‿5
⟩
plt.Set ⟨"boxwidth 0.5","style fill solid"⟩
plt.Plot stringdata‿"using 2:xtic(1) with boxes"
Additionally, functions in strings can be passed to gnuplot to evaluate:
plt.Plot "sin(x)"‿"with impulse"
Finally, to show the plot:
plt.Show @
To use Gnuplot's Multiplot features make sure multiplot is set when creating the window:
mplt ← Gnuplot "
multiplot layout 2,1 title 'Multiple plots' font ',20'
"
Plot the contents of the first subplot:
mplt.Set "title 'Subplot 1'"
mplt.Plot "x**2/10"
mplt.Plot "cos(x)"‿"with points"
Then use .Subplot to begin the next plot, after which you can set and unset options specific to that plot.
mplt.Subplot "title 'Sub-plot 2'"
mplt.Set "title 'Subplot 2'"
mplt.Unset "key"
mplt.SPlot "x*y"