inline gnuplot
June 22, 2024
Time to time I find myself needing to plot histograms and approximations in occasional posts.
Similar to inline graphviz
support today I added gnuplot
svg
inlining support into this blog.
The trivial example looks this way:
The above is generated using the following .md
snippet:
```{render=gnuplot}
plot [-pi:pi] sin(x)
```
hakyll
integration
is also straightforward:
inlineGnuplot :: TP.Block -> Compiler TP.Block
@(TP.CodeBlock (id, classes, namevals) contents)
inlineGnuplot cb| ("render", "gnuplot") `elem` namevals
= TP.RawBlock (TP.Format "html") . DT.pack <$> (
"gnuplot"
unixFilter "--default-settings"
[ "-e", "set terminal svg"
, "-"]
,
(DT.unpack contents))= return x inlineGnuplot x
Here we call gnuplot --default-settings -e "set terminal svg" -
and
pass our script over stdin
. Easy!
For those who wonder what gnuplot
is capable of have a look at
gnuplot.info
demo page.
As a bonus here is the time chart of my commits into nixpkgs
:
Have fun!