Fix axis_scale when min==max
authorKevin Rosenberg <kevin@rosenberg.net>
Mon, 3 Aug 2009 15:34:19 +0000 (09:34 -0600)
committerKevin Rosenberg <kevin@rosenberg.net>
Mon, 3 Aug 2009 15:34:19 +0000 (09:34 -0600)
libctgraphics/ezplot.cpp

index 099eff5..ca32b8f 100644 (file)
@@ -1161,10 +1161,19 @@ EZPlot::symbol (int sym, double symwidth, double symheight)
 int
 EZPlot::axis_scale (double min, double max, int nint, double *minp, double *maxp, int *nintp)
 {
-  if (min >= max || nint < 1) {
-    sys_error (ERR_WARNING, "Invalid params: min=%lf, max=%lf, num intervals=%d [axis_scale]", min, max, nint);
+  if (nint < 1) {
+    sys_error (ERR_WARNING, "No intervals to plot: num intervals=%d [axis_scale]", nint);
     return (FALSE);
   }
+  if (min >= max) {
+    double scaled = fabs(max) / 10;
+    if (scaled == 0)
+      scaled = 0.1;
+    *minp = min - scaled;
+    *maxp = max + scaled;
+    *nintp = 2;
+    return (TRUE);
+  }
 
   double eps = 0.025;
   double a = fabs(min);