def tree(): s = [ 'root', [ 'left', ['left_left'], ['left_mid'], ['left_right'], ], [ 'right', ['right_left'], ['right_right'], ] ] t = layout.tree(s, root=ORIGIN, h_sep=2, v_sep=2) t['root'] = Inner(t['root'], ['5']) t['left'] = Inner(t['left'], ['2', '4']) t['right'] = Inner(t['right'], ['7']) t['left_left'] = Leaf(t['left_left'], ['0', '1']) t['left_mid'] = Leaf(t['left_mid'], ['2']) t['left_right'] = Leaf(t['left_right'], ['4']) t['right_left'] = Leaf(t['right_left'], ['5', '6']) t['right_right'] = Leaf(t['right_right'], ['7', '8']) return t
def index_tree(canvas): tree = layout.tree(['', ['l'], ['r']], root=Point(3.5, -1), h_sep=1, v_sep=1) root = tree[''] left = canvas.new_bullet(center=tree['l']) right = canvas.new_bullet(center=tree['r']) l = canvas.new_line(src=root, dst=left) canvas.new_text(anchor=centroid(l.get_skeleton().vertices()), text='age', location=locations.NORTHWEST) l = canvas.new_line(src=root, dst=right) canvas.new_text(anchor=centroid(l.get_skeleton().vertices()), text='name', location=locations.NORTHEAST) return root, left, right
return vs def tree_edge(canvas, root, left, right): def draw_edge(seg0, seg1): canvas.new_arrow( src=centroid([seg0.vertices()[2], seg0.vertices()[3]]), dst=centroid([seg1.vertices()[0], seg1.vertices()[1]])) draw_edge(root[0], left[0]) draw_edge(root[1], right[0]) if __name__ == '__main__': tree = layout.tree( ['root', ['left', ['left_left'], ['left_right']], ['right', ['right_left'], ['right_right']]], root=ORIGIN, h_sep=1.2, v_sep=1) canvas = Canvas( preamble=['\\usepackage{amsmath}'], leading_instructions=['\\footnotesize']) segs_root = node(canvas, tree['root']) segs_left = node(canvas, tree['left'], pen_color=colors.RED) segs_right = node(canvas, tree['right'], pen_color=colors.RED) segs_left_left = node(canvas, tree['left_left'], pen_color=colors.BLUE) segs_left_right = node(canvas, tree['left_right'], pen_color=colors.BLUE) segs_right_left = node(canvas, tree['right_left'], pen_color=colors.BLUE) segs_right_right = node(canvas, tree['right_right'], pen_color=colors.BLUE)
from fathom import Point, ORIGIN from fathom.tikz import Canvas import fathom.geometry as geo import fathom.layout as layout import fathom.tikz.colors as colors import fathom.tikz.line_styles as line_styles import fathom.tikz.locations as locations from itertools import * from skiplist_lib import draw_doc_chain if __name__ == '__main__': tree = layout.tree( ['', ['a', ['al', ['ala', ['alan']], ['ali', ['alic', ['alice']]]]]], root=ORIGIN, h_sep=2, v_sep=1) canvas = Canvas(preamble=['\\usepackage{amsmath}'], leading_instructions=['\\footnotesize']) for k, v in tree.copy().items(): if k == '': continue if k == 'alan': tree['alan'] = canvas.new_bullet(center=v, brush_color=colors.RED) elif k == 'alice': tree['alice'] = canvas.new_bullet(center=v, brush_color=colors.RED) else: tree[k] = canvas.new_bullet(center=v) e = canvas.new_line(src=tree[''], dst=tree['a'])
r.vertices()[3]]), dst=centroid([d.vertices()[0], d.vertices()[1]])) canvas.new_rectangle(vertices=[ segs[0].vertices()[0], segs[-1].vertices()[1], segs[-1].vertices()[2], segs[0].vertices()[3] ]) for x in segs[1:]: canvas.new_line(src=x.vertices()[0], dst=x.vertices()[3]) if __name__ == '__main__': tree = layout.tree( ['root', ['left', ['left_up']], ['right', ['right_up']]], root=ORIGIN, h_sep=2, v_sep=1.3) for k, v in tree.copy().items(): tree[k] = upside_down(v) canvas = Canvas(preamble=['\\usepackage{amsmath}'], leading_instructions=['\\footnotesize']) canvas.new_text(anchor=tree['left_up'], text='$121^\\circ$E') left_up = canvas.new_rectangle(center=tree['left_up'], width=1, height=0.4, pen_color=colors.INVISIBLE) left = fraction(canvas, tree['left'], (180 + 121) / 360, colors.BLUE) canvas.new_arrow(src=left_up,