preview draw.sh

main
Bel LaPointe 2023-10-25 08:59:53 -06:00
parent 1fc7d76e26
commit 747dc90e9b
2 changed files with 42 additions and 1 deletions

41
cmd/clitest/draw.sh Normal file
View File

@ -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()
'

View File

@ -13,7 +13,7 @@ import (
func main() { func main() {
foo := flag.String("foo", "bal", "bal or reg") 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") likeBefore := flag.String("like-before", "9", "date str to compare")
likeAfter := flag.String("like-after", "0", "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-*") likeLedger := flag.Bool("like-ledger", false, "limit data to these -like-* rather than zoom to these -like-*")