axi/examples/isolines.py

58 lines
1.4 KiB
Python

import axi
import sys
def prepare():
d = axi.Drawing.load(sys.argv[1])
print len(d.paths)
print 'transforming'
d = d.rotate_and_scale_to_fit(12, 8.5)
print 'sorting'
d = d.sort_paths()
print 'joining'
d = d.join_paths(0.01)
print len(d.paths)
print 'simplifying'
d = d.simplify_paths(0.005)
print 'rendering'
im = d.render(
scale=109 * 1, line_width=0.3/25.4,
show_axi_bounds=False, use_axi_bounds=False)
im.write_to_png('isolines.png')
d.dump('isolines.axi')
def vertical_stack(ds, spacing=0, center=True):
result = axi.Drawing()
y = 0
for d in ds:
x = 0
if center:
x = -d.width / 2
d = d.origin().translate(x, y)
result.add(d)
y += d.height + spacing
return result
def title():
d1 = axi.Drawing(axi.text('Topography of', axi.METEOROLOGY))
d1 = d1.scale_to_fit_height(0.25)
d2 = axi.Drawing(axi.text('Vancouver Island', axi.METEOROLOGY))
d2 = d2.scale_to_fit_height(0.375)
d = vertical_stack([d1, d2], 0.125, False)
d = d.join_paths(0.01)
d = d.simplify_paths(0.001)
d = d.move(0, 8.5, 0, 1)
return d
def main():
d = axi.Drawing.load(sys.argv[1])
d.add(title())
im = d.render(
scale=109 * 1, line_width=0.3/25.4,
show_axi_bounds=False, use_axi_bounds=False)
im.write_to_png('out.png')
d.dump('out.axi')
if __name__ == '__main__':
prepare()
# main()