Fixed sizes axis range in files.out_diabar
authorEugene Gagarin <mosfet07@ya.ru>
Fri, 22 May 2009 12:52:42 +0000 (16:52 +0400)
committerEugene Gagarin <mosfet07@ya.ru>
Fri, 22 May 2009 12:52:42 +0000 (16:52 +0400)
src/files/out_diabar.py

index 296f9b8..014005f 100755 (executable)
@@ -3,7 +3,7 @@
 # vim: sw=4 ts=4 expandtab ai
 
 from random import random
-from math import pi, cos, sin, sqrt
+from math import pi, cos, sin, sqrt, ceil
 import os.path
 
 from misc import size_hum_read
@@ -42,42 +42,57 @@ class Gtk_Presentation(object):
         filelist.sort(reverse=True)
         filelist = filelist[:maxdata]
 
-        # maximum size
+        # Maximum size
         maximum = max([bsize for bsize, path, size in filelist])
 
         #====================
         # Diagram
         #====================
 
-        # only byte sizes
+        # Only byte sizes
         self.data = (
             ('sizes',
                 [(i, d[0]) for i, d in enumerate(filelist)]),
         )
 
-        # labels for bar chart
+        # Labels for bar chart
         ticks = [dict(v=i, label=os.path.basename(d[1])) for i, d in enumerate(filelist)]
 
+        # Calculate sizes axis range
+        max_ticks = 10
+
+        multiplier = 10**(len(`maximum`) - 2)
+        interval_2 = 2*multiplier
+        interval_5 = 5*multiplier
+
+        ticks_2 = range(0, maximum + interval_2, interval_2)
+        ticks_5 = range(0, maximum + interval_5, interval_5)
+
+        ticks_count2 = len(ticks_2) - 1
+        if ticks_count2 > max_ticks:
+            interval = interval_5
+            ticks_range = [0, max(ticks_5)]
+        else:
+            interval = interval_2
+            ticks_range = [0, max(ticks_2)]
+
+        #print multiplier, interval, ticks_range
         #yticks = [dict(v=i*1000, label=`i` + 'Kb') for i in range(maximum/1000)]
-        #interval = (maximum/1024)*100
-#         print 'maximum:', maximum
-#         print 'interval:', interval
 
+        # Chart properties
         self.options = {
             'axis': {
                 'tickSize' : 0,
                 'tickFontSize' : 11,
                 'x': {
                     'ticks': ticks,
-                    'tickCount': 7,
                     'rotate': 90,
                 },
                 'y': {
                     #'ticks': yticks,
-                    #'tickCount': maximum/(1000*10),
-                    'tickCount': 10,
-                    #'tickPrecision' : 0,
-                    #'interval' : interval,
+                    'tickPrecision' : 0,
+                    'interval' : interval,
+                    'range' : ticks_range,
                 },
             },
             'background': {
@@ -129,7 +144,7 @@ class Gtk_Presentation(object):
         cr.set_source_surface(self.surface, 0, 0)
         cr.paint()
 
-        # outline rectangle
+        # Outline rectangle
         cr.set_source_rgb(0, 0, 0)
         cr.rectangle(0, 0, w, h)
         cr.stroke()