rrdtool1: modify logarithmic scale labelling
authorKevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
Sun, 7 Jun 2020 15:21:24 +0000 (18:21 +0300)
committerHannu Nyman <hannu.nyman@iki.fi>
Sun, 7 Jun 2020 15:21:24 +0000 (18:21 +0300)
The y-axis graph labels in logarithmic mode display in 'scientific'
notation eg: '1e+00' for 0, '1e+01' for 10, '1e+02' for 100 and so on.
This IMO is a pain in the backside for non scientific humans to read.

Modified output to display numbers up to 99,999 in conventional decimal
format and to revert to scientific notation for larger, thus the same
display space is taken.

Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
(cherry picked from commit edc41b26ab1e78d55e87c79562d8430b87d314a7)

utils/rrdtool1/Makefile
utils/rrdtool1/patches/040-no-e-notation-on-log-display.patch [new file with mode: 0644]

index 61eeec704580eb4f519742097384aa59ea754181..adb2d1a5476c46fcac7f848f8dc733ae1991e454 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=rrdtool1
 PKG_VERSION:=1.0.50
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/rrdtool-$(PKG_VERSION)
 PKG_SOURCE:=rrdtool-$(PKG_VERSION).tar.gz
diff --git a/utils/rrdtool1/patches/040-no-e-notation-on-log-display.patch b/utils/rrdtool1/patches/040-no-e-notation-on-log-display.patch
new file mode 100644 (file)
index 0000000..4555167
--- /dev/null
@@ -0,0 +1,27 @@
+--- a/src/rrd_graph.c
++++ b/src/rrd_graph.c
+@@ -2049,7 +2049,7 @@ horizontal_log_grid(gdImagePtr gif, imag
+     char     graph_label[100];
+     gdPoint  polyPoints[4];
+     int      styleMinor[2],styleMajor[2];
+-    double   value, pixperstep, minstep;
++    double   value, pixperstep, minstep, yval;
+     /* find grid spaceing */
+     pixpex= (double)im->ysize / (log10(im->maxval) - log10(im->minval));
+@@ -2118,7 +2118,14 @@ horizontal_log_grid(gdImagePtr gif, imag
+           
+           gdImageLine(gif, polyPoints[0].x,polyPoints[0].y,
+                       polyPoints[1].x,polyPoints[0].y,gdStyled);
+-          sprintf(graph_label,"%3.0e",value * yloglab[majoridx][i]);
++          yval = value * yloglab[majoridx][i];
++          if (yval >= 100000) {
++                  sprintf(graph_label,"%3.0e", yval);
++          } else {
++                  if (yval == 1) /* prints as 1e+00 */
++                      yval = 0;
++                  sprintf(graph_label,"%5.0f", yval);
++          }
+           gdImageString(gif, SmallFont,
+                         (polyPoints[0].x - (strlen(graph_label) * 
+                                             SmallFont->w)-7),