diff options
author | Walter Bender <walter@sugarlabs.org> | 2010-09-13 16:17:47 (GMT) |
---|---|---|
committer | Walter Bender <walter@sugarlabs.org> | 2010-09-13 16:17:47 (GMT) |
commit | f8c82ac236e6dda7908be7a519d85405033a8c0a (patch) | |
tree | 74b8d67a047b23a8352efd2c668b6adebc8e1c17 /genslides.py | |
parent | 95cb7008cd6ca08cb95b6addb4b99054e1e3efa2 (diff) |
loglog vs lnlog
Diffstat (limited to 'genslides.py')
-rwxr-xr-x | genslides.py | 85 |
1 files changed, 72 insertions, 13 deletions
diff --git a/genslides.py b/genslides.py index 1ac090a..0b543ad 100755 --- a/genslides.py +++ b/genslides.py @@ -992,19 +992,6 @@ class LLn_slide(C_slide): else: svg += self.header(label, x) - """ - for i in range(0, 101): - if int((i / 5) * 5) == i: - svg += self.mark(offset_function(i / 100.), self.slide3, - self.slide2, self.slide1, - label_function(i), flip=flip_flag) - else: - svg += self.mark(offset_function(i / 100.), self.slide3, - self.slide2, - self.slide1 + self.slide_offset2, - flip=flip_flag) - """ - for i in range(0, int(100 * math.log(10)) + 1): if int((i / 5) * 5) == i: svg += self.mark(offset_function(i / (100. * math.log(10))), @@ -1017,6 +1004,11 @@ class LLn_slide(C_slide): self.slide1 + self.slide_offset2, flip=flip_flag) + svg += self.mark(offset_function(1), + self.slide3, self.slide2, + self.slide1 + self.slide_offset2, + flip=flip_flag) + svg += self.footer() return svg @@ -1042,6 +1034,73 @@ class LLn_stator(LLn_slide): x=10) +class Log_slide(LLn_slide): + """ Ln scale for slide """ + def __init__(self): + self.name = 'Log' + self.slide1 = HTOP1 + self.slide2 = HTOP2 + self.slide3 = HTOP3 + self.slide_offset1 = 5 + self.slide_offset2 = 7 + self.slide_offset3 = -12 + + def offset_function(x): + return math.log(x, 10) + + def label_function(x): + return math.log(x, 10) + + self.svg = self.make_slide(self.name, offset_function, label_function, + x=10) + + def make_slide(self, label, offset_function, label_function, x=None, + flip_flag=False): + """ Generate marks along a slide using passed functions """ + + svg = '' + if x is None: + svg += self.header(label) + else: + svg += self.header(label, x) + + for i in range(100, 1010, 10): + if int((i / 50) * 50) == i: + svg += self.mark(offset_function(i / 100.), + self.slide3, self.slide2, self.slide1, + label_function(i / 100.), + flip=flip_flag) + else: + svg += self.mark(offset_function(i / 100.), + self.slide3, self.slide2, + self.slide1 + self.slide_offset2, + flip=flip_flag) + + svg += self.footer() + return svg + + +class Log_stator(Log_slide): + """ Log log scale for slide """ + def __init__(self): + self.name = 'Log' + self.slide1 = SHEIGHT - HTOP1 + self.slide2 = SHEIGHT - HTOP2 + self.slide3 = SHEIGHT - HTOP3 + 12 + self.slide_offset1 = - 5 + self.slide_offset2 = - 7 + self.slide_offset3 = 12 + + def offset_function(x): + return math.log(x, 10) + + def label_function(x): + return math.log(x, 10) + + self.svg = self.make_slide(self.name, offset_function, label_function, + x=10) + + class Custom_slide(C_slide): """ User-defined scale for slide """ def __init__(self, offset_function, label_function, min, max, step): |