From f7cb8c2ee3bceaa3f5b344f895f4b8d0a00e0bcc Mon Sep 17 00:00:00 2001 From: Cal Wing Date: Fri, 20 Feb 2026 11:15:30 +1000 Subject: [PATCH 1/4] Fix syntax --- src/plotbox/__main__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plotbox/__main__.py b/src/plotbox/__main__.py index 2cffd2d..9046f3d 100644 --- a/src/plotbox/__main__.py +++ b/src/plotbox/__main__.py @@ -1,4 +1,4 @@ -from .plotbox import main() +from .plotbox import main if __name__ == "__main__": main() \ No newline at end of file From c10459f07e1a1fbdd9c2feed4af0d6ef32c9c647 Mon Sep 17 00:00:00 2001 From: Cal Wing Date: Fri, 20 Feb 2026 15:50:44 +1000 Subject: [PATCH 2/4] Update README.md --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9cdfbcf..eafc3f9 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,9 @@ # Plotbox -A quick MatPlotLib data visualization tool +A quick MatPlotLib data visualization tool, currently a little jank. + +First argument is the path to a CSV file, in the future more data formats are desired. + +Can run with uv `uv run plotbox .\IDCJAC0009_040976_1800_Data.csv` or once installed into an environment `python -m plotbox .\IDCJAC0009_040976_1800_Data.csv` Rainfall Data `IDCJAC0009_040976_1800_Data.csv` obtained from BOM (https://www.bom.gov.au/jsp/ncc/cdio/weatherData/av?p_nccObsCode=136&p_display_type=dailyDataFile&p_startYear=2025&p_c=-335807484&p_stn_num=040976) on the 2026-02-20 \ No newline at end of file From 6a30fe7d56c813dfe156f7c26351ab2b201efd79 Mon Sep 17 00:00:00 2001 From: Cal Wing Date: Tue, 5 May 2026 00:11:33 +0000 Subject: [PATCH 3/4] Abuse plotbox into working with raw data from GEM2 output --- src/plotbox/plotbox.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/plotbox/plotbox.py b/src/plotbox/plotbox.py index 51529c1..c4e3109 100644 --- a/src/plotbox/plotbox.py +++ b/src/plotbox/plotbox.py @@ -20,16 +20,19 @@ def main(): data = {} numeric_headers = [] - headers = np.genfromtxt(data_path, delimiter=",", skip_header=0, max_rows=1, dtype=str) + headers = np.genfromtxt(data_path, delimiter=",", skip_header=0, max_rows=1, dtype=str, comments="#") for i, header in enumerate(headers): - data[header] = np.genfromtxt(data_path, delimiter=",", skip_header=1, max_rows=None, dtype=float, usecols=(i,)) + data[header] = np.genfromtxt(data_path, delimiter=",", skip_header=1, max_rows=None, comments="#", dtype=float, usecols=(i,)) if np.isnan(data[header][0]): - data[header] = np.genfromtxt(data_path, delimiter=",", skip_header=1, max_rows=None, dtype=str, usecols=(i,)) + data[header] = np.genfromtxt(data_path, delimiter=",", skip_header=1, max_rows=None, dtype=str, comments="#", usecols=(i,)) else: numeric_headers.append(header) - data["Index"] = tuple(range(len(data[numeric_headers[0]]))) + if len(numeric_headers) > 0: + data["Index"] = tuple(range(len(data[numeric_headers[0]]))) + else: + data["Index"] = tuple(range(len(data[headers[0]]))) fig, ax = plt.subplot_mosaic( [ From ecffe144f7b5ea3ed2d2c3f0e6a8a21a83e1ebe3 Mon Sep 17 00:00:00 2001 From: Cal Wing Date: Tue, 5 May 2026 00:14:48 +0000 Subject: [PATCH 4/4] Delete directory '__pycache__' --- __pycache__/plotbox.cpython-313.pyc | Bin 3513 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 __pycache__/plotbox.cpython-313.pyc diff --git a/__pycache__/plotbox.cpython-313.pyc b/__pycache__/plotbox.cpython-313.pyc deleted file mode 100644 index 9783e2ec41250e0f0c6aa4eb8c5a0bd312a26518..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3513 zcmb7GO>7&-6`m!RQ0HAnl<*-z>SLVz_8J z;J)`}=FOY;X5RaTdtR>#LHpJE$8rIr&uPbOma4FaL3o6C#4}eAu5bo3M&E)h2Df4> zaLW~T!iH_ZijEySV9a`jo8T}v;l!@$xO>8by@t$Q@lE)#-;iw}H{b@4?VSh*5=_YP zf;wHby5iPpx_xzO0hfVv%0P-8tsS0xU5$D zv1%L!a|5-)xAzIq8E(corOe<0}^adu-H)T5Q5AK3uzvkidjn>ie3Kz?xA9(Y1RBxls^B+RWKVM@_2T z7x>FmeBFN&rWKPWeWz(5+-*vAehBd#?;NlIbq!d6yLkqvhxZO!>G`KUX^!_P zwkgn}yM+(b*P4=GGxr3~51OOq3f?im2+TKO_+&L3(_WZ!eJyKn_LXL?5WrRwx@p%e z14y$#p1^&mb8sFE?`P4wp!}ZY8r%XsMa`nv`G#R@+9_~?Q*a4x!6SH2*!e&wy3Hw$ zDR20QX}`_|M?IP;=l{|W9B_iQYJm9br+u_;)07S&v!;S50sd8doI|0;>n~^tey?kk zzZo2tQ&KRU)%4)36wHX4CdGrYauCzwBg{8KEOExAl$@4z2@|(=N6ti(k{E{$mlktT ztS)H87S|UuQpkoWPGFjr*h`6z+HhnwDW;}C>#`D;a)eEbvO?^+sF;&AVqc7AQmX!f zUJ!A|0El!9^HLmu%d;TI^<)%_x~zg`N?cU4I%!VHiKL!TQ*lYbYJ5>jrPPHN)ZLJk zSi~GvoRwfdhZxi4c}a`WV9iFcr3t>hT^Jp)KZ1G;n{)fP!b~{?hB~EKrfj?+g#r6s zZS@nbY0*WmwAX0WFs`mDF#B@B+|yZ~H>D}=b(j~fp@FG~kPmS6|JHu3op<(C-IP6C zL(%$PW{glJU2tkvI6nis6}EOVfx5OSy?l8LwxgMDl0`bDJ8{pDNby$lq6!pCa@eQE=|&- zIYX5=sjSO-N+R}*h$TfQtRki*(wKmW7=2Bpc(j^+EX`|3MkygFabk~&%Dku%Hjc%G zkegWNRF!bKYAs>1RBl2qYkU(1hHZITx+!Eg0$t0 zM*2oiPYarawdw5L*n+GirpKiDY3j_ZnlpKSW|27Js!@BSg;r$$nUoq6Q`$&>b@&|E z)jk9A&pg^{YA-kSm74kr+*Y7vCHb(oVBg_fg;PteGS^<>+Bdn*txA8{zvSQKI;y=g z*HhwpR+F1tUu~qj#C5MZ%fZ1?aIhRaSqh#k9yql=`=p~he7Q7yxjcNmG<>}{H2D-4 z!;y0M!&3Oe;tjFbGrP&fwpzQ&t^K9e{%5U&h4HPHj@6?Nrwik|9^~~G=9eaxCzmEy z$JdV*CO168Fa4#fu4{*LFT0jp)X_h49eWTV3N;g}wg|T);>0|$ zrT|%Ju@j4uAuhPTIjpAjoDNDlCQeDorX@fniP+{+s;Cp2tSKU3nwZJZySC}s45SF$ zkCKpxHIvebPs`5ID~P65O_XEAOEYOsj8SA%F{WsM?Q}<%szhTcnI;lpwWPWb@)=%f z#Bb~>$Eqm<_*TJTjW9B?S24N4$cgBz7`v0eY8ISfa+sEYkxzJlN`sUfr{rx)-T|Uf zq&AWW$hVD#PtZwPEe4?#uYCrX`R_d1cKeoxmWEcovvR(0CO-zgDyOPYym6H*bAV@bX+aVqt8h^}*F0 zPgmJe$mrw@?8h(bnUuOTl;EY<>r>Z`=y`r+wWh@j}{ttn^Ajz zk!{{#?fKmOt7W#g#P${s3~aK4+n)B-#??zd?|$r9TUN~&T8O>jSRJA!?qr2ty z7LrS6w*0++Idx&9Vf^>%dSK-TYj+<9ifzX>8;|`?Ej5h4bg*7~{=%1@CR^th2*~bR z$mS}u%_X*Z<<=(Kv%@;~_5RAb3u8aJ_MCP6{dnSEUz|mOi;PB-@Q