fix the scales - ploot - simple plotting tools HTML git clone git://bitreich.org/ploot git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/ploot DIR Log DIR Files DIR Refs DIR Tags DIR README DIR LICENSE --- DIR commit c7ebe97a6b085ad58fc77f47e98a785def7cd7d4 DIR parent c3911021718dc5e5b2dd6469495e7f3bc4befdd2 HTML Author: Josuah Demangeon <mail@josuah.net> Date: Wed, 2 May 2018 07:34:05 +0200 fix the scales Diffstat: M ffplot.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) --- DIR diff --git a/ffplot.c b/ffplot.c @@ -22,6 +22,9 @@ #define MARGIN 4 +#define XDENSITY 7 /* how many values to be displayed on x axis */ +#define YDENSITY 7 /* how many values to be displayed on y axis */ + #define FONT_H 14 #define FONT_W 7 @@ -122,9 +125,9 @@ yaxis(Canvas *can, Color *label, Color *grid, { time_t t; int y; - char str[sizeof("YYYY/MM/DD")], *fmt; + char str[sizeof(" YYYY/MM/DD ")], *fmt; - fmt = (tstep < 3600 * 24) ? " %H:%M:%S " : " %Y/%m/%d "; + fmt = (tstep < 3600 * 12) ? " %H:%M:%S " : " %Y/%m/%d "; for (t = tmax - tmax % tstep; t >= tmin; t -= tstep) { y = t2y(t, tmin, tmax); @@ -203,11 +206,11 @@ find_scales(Vlist *v, int n, double *vmin, double *vmax, double *vstep, time_t *tmin, time_t *tmax, time_t *tstep) { - double dv, *vs, vscale[] = { 5, 2, 1 }; + double dv, *vs, vscale[] = { 1, 2, 3, 5 }; time_t dt, *ts, tscale[] = { - 3600*24*30, 3600*24*5, 3600*24*2, 3600*24, 3600*18, 3600*10, - 3600*5, 3600*2, 3600, 60*30, 60*20, 60*10, 60*5, 60*2, 60, 30, - 20, 10, 5, 2, 1 + 1, 5, 2, 10, 20, 30, 60, 60*2, 60*5, 60*10, 60*20, 60*30, 3600, + 3600*2, 3600*5, 3600*10, 3600*18, 3600*24, 3600*24*2, + 3600*24*5, 3600*24*30 }; int i; @@ -230,7 +233,7 @@ find_scales(Vlist *v, int n, dt = *tmax - *tmin; for (ts = tscale; ts < tscale + LEN(tscale); ts++) { - if (dt > *ts * 5) { + if (dt < *ts * YDENSITY) { *tstep = *ts; break; } @@ -238,8 +241,8 @@ find_scales(Vlist *v, int n, for (i = 1; i != 0; i *= 10) { for (vs = vscale; vs < vscale + LEN(vscale); vs++) { - if (dv > *vs * i * 1) { - *vstep = *vs * i * 10; + if (dv < *vs * i * XDENSITY) { + *vstep = *vs * i; i = 0; break; }