ana-ledger/cmd/clitest/draw.sh

42 lines
1.0 KiB
Bash

#! /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()
'