Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ---
- food.gnuplot
- # == Setup ==
- set terminal qt
- set xdata time
- set timefmt "%Y/%m/%d"
- set label "COVID" at "2020/03/20",850
- set key on left top vertical enhanced title "Categories"
- set title "Food Expenses"
- set offsets -328725, 0, 0, 0
- # == Monthly-Bucketed Expenses ==
- plot \
- "monthly_expenses/food_groceries.txt" using 1:2 title "Groceries" with fillsteps, \
- "monthly_expenses/food_in.txt" using 1:2 title "Take-out" with fillsteps, \
- "monthly_expenses/food_out.txt" using 1:2 title "Eat-out" with fillsteps, \
- "monthly_expenses/food_all.txt" using 1:2 title "Total" with fillsteps
- ---
- get_viz-data.sh
- # manufacture zeros at the beginning of each month between START_DATE and END_DATE
- BLANKS=mktemp
- start_date=$1
- end_date=$2
- current_date=$(gdate -d "$start_date" "+%Y/%m/01")
- while [[ "$current_date" < "$end_date" ]]; do
- echo "$current_date 0.0" >>$BLANKS
- current_date=$(gdate -d "$current_date 1 month" "+%Y/%m/01")
- done
- echo "$current_date 0.0" >>$BLANKS
- ledger --effective -f ledgers/main.ldg reg --sort date -F '%D %t\n' \
- Expenses:Food:Groceries |
- tr -d "$," |
- gawk -F " " -f viz-bucket.awk \
- >$MONTHLY_DIR/food_groceries.txt
- ledger --effective -f ledgers/main.ldg reg --sort date -F '%D %t\n' \
- Expenses:Food:Out |
- tr -d "$," |
- awk -F " " -f viz-bucket.awk \
- >$MONTHLY_DIR/food_out.txt
- ledger --effective -f ledgers/main.ldg reg --sort date -F '%D %t\n' \
- Expenses:Food:In |
- tr -d "$," |
- awk -F " " -f viz-bucket.awk \
- >$MONTHLY_DIR/food_in.txt
- ledger --effective -f ledgers/main.ldg reg --sort date -F '%D %t\n' \
- Expenses:Food |
- tr -d "$," |
- awk -F " " -f viz-bucket.awk \
- >$MONTHLY_DIR/food_all.txt
- # merge blanks into monthly expense files (tricky!)
- ls $MONTHLY_DIR | xargs -R 2 -I % \
- gsort \
- -k1,1 \
- -s \
- $MONTHLY_DIR/% $BLANKS \
- -o $MONTHLY_DIR/%
- # clean up blanks
- rm $BLANKS
- ---
- viz-bucket.awk
- BEGIN {
- sum=0
- bucket_month=""
- } {
- line_date = substr($1, 0, 10)
- line_year = substr(line_date, 0, 4)
- line_month = substr(line_date, 6, 2)
- line_amt = $2
- if (bucket_month == line_month) {
- sum += line_amt
- printf "%s/%s/%s %s\n", line_year, line_month, substr(line_date, 9, 2), sum
- } else {
- sum = line_amt
- bucket_month=line_month
- printf "%s/%s/%s %s\n", line_year, line_month, substr(line_date, 9, 2), sum
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment