def plot_kite(ax, beta, phi, psi=np.pi):
    y, z = calc_proj(beta, phi)
    psi_proj = corrected_orientation_angle(beta, phi, psi)[2]
    t = MarkerStyle(marker=7)
    t._transform = t.get_transform().rotate_deg(psi_proj * 180. / np.pi)
    marker_obj = ax.plot(y,
                         z,
                         's',
                         marker=t,
                         ms=20,
                         mfc='None',
                         mew=2,
                         mec='k')[0]
Exemple #2
0
def plot_arrow(longs,
               lats,
               distance,
               min_distance=0.0001,
               dotted=False,
               arrow_colour='k',
               dot_colour='k',
               lw=1):

    if dotted: plt.plot(longs, lats, '--', c=arrow_colour, lw=lw)
    else: plt.plot(longs, lats, c=arrow_colour, lw=lw)

    #plt.plot(longs[1],lats[1],'.',c=dot_colour,ms=10)

    if not dotted and distance > min_distance:

        angle = -np.arctan2(longs[1] - longs[0], lats[1] - lats[0]) * 180 / (
            np.pi)
        t = MarkerStyle(marker='^')
        t._transform = t.get_transform().rotate_deg(angle)
        plt.scatter(np.mean(longs),
                    np.mean(lats),
                    color=arrow_colour,
                    marker=t)  #(3, 0, angle))
def quiver_dict(ax,
                dat,
                s=75,
                X=None,
                Y=None,
                inx=True,
                scale=1.0,
                width=None):
    hang = fabric_to_ver_rot(dat['fabric 1'], dat['fabric 2'], dat['fabric 5'])
    if inx:
        ang = fabric_to_ver_rot(dat['fabric 1'], dat['fabric 2'],
                                dat['fabric 3'])
        ang[ang < -45] = ang[ang < -45] + 90.
        ang[ang > 45] = ang[ang > 45] - 90.
        u = np.sin(ang / 180.0 * np.pi) * dat['eigenv 3']
        v = np.cos(ang / 180.0 * np.pi) * dat['eigenv 3']
        units = 'width'
    else:
        u = np.zeros_like(dat['eigenv 3'])
        v = np.ones_like(dat['eigenv 3'])
        units = 'height'
        ang = np.zeros_like(dat['fabric 1'])

    singlemax = dumb_woodcock(dat)
    vertical = dat['fabric 2'] > (1.0 - dat['fabric 2'] - dat['fabric 1'])
    vertical_sm = np.logical_and(vertical, singlemax)
    hor_sm = np.logical_and(~vertical, singlemax)
    quiv = ax.quiver(X.flatten()[vertical_sm],
                     Y.flatten()[vertical_sm],
                     u[vertical_sm],
                     v[vertical_sm],
                     units=units,
                     scale=scale,
                     width=width)
    if np.any(hor_sm):
        hq = [
            ax.plot(X.flatten()[hor_sm],
                    Y.flatten()[hor_sm],
                    marker='.',
                    markersize=2,
                    linestyle='none',
                    color='0.4',
                    label='Single max. partly into page')
        ]
    else:
        hq = []

    planlabel = False
    ooplabel = False
    other_pts = []
    for i in range(np.sum(~singlemax)):
        t = MarkerStyle(marker=HOOP)
        t._transform = t.get_transform().rotate_deg(-ang[~singlemax][i])
        if np.isnan(dat['fabric 1'].flatten()[~singlemax][i]):
            continue
        if np.abs(hang.flatten()[~singlemax][i]) > 1:
            color = '0.4'
            if not ooplabel:
                label = 'Vert. girdle, normal out of x-z'
                ooplabel = True
            else:
                label = None
        else:
            color = 'k'
            if not planlabel:
                label = 'Vert. girdle, normal in x-z'
                planlabel = True
            else:
                label = None

        other_pts.append(
            ax.scatter(X.flatten()[~singlemax][i],
                       Y.flatten()[~singlemax][i],
                       marker=t,
                       s=s,
                       linewidth=0.5,
                       c='none',
                       edgecolors=color,
                       label=label))
    return [quiv] + hq + other_pts