def __init__( self, ax, a, b, ymid, highlight=False, style="curve", ec="k", fc="k", alpha=0.2, lw=1, zorder=1, ): """Create syntenic wedges between tracks. Args: ax: matplotlib Axes a (tuple of floats): ((start_x, start_y), (end_x, end_y)) b (tuple of floats): ((start_x, start_y), (end_x, end_y)) ymid (float): y-mid position for curve style only highlight (bool, optional): Plot this shade if color is specified. Defaults to False. style (str, optional): Style. Defaults to "curve", must be one of ("curve", "line") ec (str, optional): Edge color. Defaults to "k". fc (str, optional): Face color. Defaults to "k". alpha (float, optional): Transparency. Defaults to 0.2. lw (int, optional): Line width. Defaults to 1. zorder (int, optional): Z-order. Defaults to 1. """ fc = fc or "gainsboro" # Default block color is grayish assert style in self.Styles, "style must be one of {}".format(self.Styles) a1, a2 = a b1, b2 = b ax1, ay1 = a1 ax2, ay2 = a2 bx1, by1 = b1 bx2, by2 = b2 M, C4, L, CP = Path.MOVETO, Path.CURVE4, Path.LINETO, Path.CLOSEPOLY if style == "curve": pathdata = [ (M, a1), (C4, (ax1, ymid)), (C4, (bx1, ymid)), (C4, b1), (L, b2), (C4, (bx2, ymid)), (C4, (ax2, ymid)), (C4, a2), (CP, a1), ] else: pathdata = [(M, a1), (L, b1), (L, b2), (L, a2), (CP, a1)] codes, verts = zip(*pathdata) path = Path(verts, codes) if highlight: ec = fc = highlight pp = PathPatch(path, ec=ec, fc=fc, alpha=alpha, lw=lw, zorder=zorder) ax.add_patch(pp)
def __init__(self, ax, a, b, ymid, highlight=False, ec="k", fc="k", alpha=.2, lw=1, zorder=1): a1, a2 = a b1, b2 = b ax1, ay1 = a1 ax2, ay2 = a2 bx1, by1 = b1 bx2, by2 = b2 M, C4, L, CP = Path.MOVETO, Path.CURVE4, Path.LINETO, Path.CLOSEPOLY pathdata = \ [ (M, a1), (C4, (ax1, ymid)), (C4, (bx1, ymid)), (C4, b1), (L, b2), (C4, (bx2, ymid)), (C4, (ax2, ymid)), (C4, a2), (CP, a1) ] codes, verts = zip(*pathdata) path = Path(verts, codes) if highlight: ec = fc = highlight pp = PathPatch(path, ec=ec, fc=fc, alpha=alpha, lw=lw, zorder=zorder) ax.add_patch(pp)