""" Copy from https://github.com/Toblerity/Shapely/blob/master/docs/code/figures.py """ from math import sqrt from shapely import affinity GM = (sqrt(5)-1.0)/2.0 W = 8.0 H = W*GM SIZE = (W, H) BLUE = '#6699cc' GRAY = '#999999' DARKGRAY = '#333333' YELLOW = '#ffcc33' GREEN = '#339933' RED = '#ff3333' BLACK = '#000000' COLOR_ISVALID = { True: BLUE, False: RED, } def plot_line(ax, ob, color=GRAY, zorder=1, linewidth=3, alpha=1): x, y = ob.xy ax.plot(x, y, color=color, linewidth=linewidth, solid_capstyle='round', zorder=zorder, alpha=alpha) def plot_coords(ax, ob, color=BLACK, zorder=1, alpha=1): x, y = ob.xy ax.plot(x, y, color=color, zorder=zorder, alpha=alpha) def color_isvalid(ob, valid=BLUE, invalid=RED): if ob.is_valid: return valid else: return invalid def color_issimple(ob, simple=BLUE, complex=YELLOW): if ob.is_simple: return simple else: return complex def plot_line_isvalid(ax, ob, **kwargs): kwargs["color"] = color_isvalid(ob) plot_line(ax, ob, **kwargs) def plot_line_issimple(ax, ob, **kwargs): kwargs["color"] = color_issimple(ob) plot_line(ax, ob, **kwargs) def plot_bounds(ax, ob, zorder=1, alpha=1): x, y = zip(*list((p.x, p.y) for p in ob.boundary)) ax.plot(x, y, 'o', color=BLACK, zorder=zorder, alpha=alpha) def add_origin(ax, geom, origin): x, y = xy = affinity.interpret_origin(geom, origin, 2) ax.plot(x, y, 'o', color=GRAY, zorder=1) ax.annotate(str(xy), xy=xy, ha='center', textcoords='offset points', xytext=(0, 8)) def set_limits(ax, x0, xN, y0, yN): ax.set_xlim(x0, xN) ax.set_xticks(range(x0, xN+1)) ax.set_ylim(y0, yN) ax.set_yticks(range(y0, yN+1)) ax.set_aspect("equal")