From 747dc90e9bc5b10ee5b59e83b4c7c1ef852917f9 Mon Sep 17 00:00:00 2001 From: Bel LaPointe Date: Wed, 25 Oct 2023 08:59:53 -0600 Subject: [PATCH] preview draw.sh --- cmd/clitest/draw.sh | 41 +++++++++++++++++++++++++++++++++++++++++ cmd/clitest/main.go | 2 +- 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 cmd/clitest/draw.sh diff --git a/cmd/clitest/draw.sh b/cmd/clitest/draw.sh new file mode 100644 index 0000000..155c284 --- /dev/null +++ b/cmd/clitest/draw.sh @@ -0,0 +1,41 @@ +#! /bin/bash + +cd "$(dirname "$(realpath "$BASH_SOURCE")")" + +go run . \ + -json \ + -group-date ^20..-.. \ + -group-name '^[^:]*:[^:]*' \ + -like-name '(AssetAccount|Debts|Stock|Retirement)' \ + -foo reg \ + "$@" ./macro.d/* \ +| jq -c '.[] | {label: .name, x: .delta.Date, y: .balance[(.delta.Currency)], z: .delta.Currency}' \ +| grep '"z":"\$"' \ +| python3 -c ' +# line chart +import matplotlib.pyplot as plt +import json +from sys import stdin + +fig = plt.figure() +plot = fig.add_subplot() + +label_z_x_y = {} +for line in stdin.readlines(): + if not line: + continue + d = json.loads(line) + if not d["label"] in label_z_x_y: + label_z_x_y[d["label"]] = {} + if not d["z"] in label_z_x_y[d["label"]]: + label_z_x_y[d["label"]][d["z"]] = {} + label_z_x_y[d["label"]][d["z"]][d["x"]] = d["y"] +for label in label_z_x_y: + for z in label_z_x_y[label]: + xs = sorted([i for i in label_z_x_y[label][z].keys()]) + ys = [label_z_x_y[label][z][x] for x in xs] + plot.plot(xs, ys, label=f"{label} ({z})") + +plot.legend() +plt.show() +' diff --git a/cmd/clitest/main.go b/cmd/clitest/main.go index 36a2bf2..5e25751 100644 --- a/cmd/clitest/main.go +++ b/cmd/clitest/main.go @@ -13,7 +13,7 @@ import ( func main() { foo := flag.String("foo", "bal", "bal or reg") - likeName := flag.String("like", ".", "regexp to match") + likeName := flag.String("like-name", ".", "regexp to match") likeBefore := flag.String("like-before", "9", "date str to compare") likeAfter := flag.String("like-after", "0", "date str to compare") likeLedger := flag.Bool("like-ledger", false, "limit data to these -like-* rather than zoom to these -like-*")