'create a twin of Axes for generating a plot with a sharex
x-axis but independent y axis.  The y-axis of self will have
ticks on left and the returned axes will have ticks on the
right'

def twin(self, aux_trans=None, axes_class=None):

    if (axes_class is None):
        axes_class = self._get_base_axes()
    parasite_axes_auxtrans_class = parasite_axes_auxtrans_class_factory(axes_class)
    if (aux_trans is None):
        ax2 = parasite_axes_auxtrans_class(self, mtransforms.IdentityTransform(), viewlim_mode=u'equal')
    else:
        ax2 = parasite_axes_auxtrans_class(self, aux_trans, viewlim_mode=u'transform')
    self.parasites.append(ax2)
    ax2._remove_method = (lambda h: self.parasites.remove(h))
    self.axis[(u'top', u'right')].set_visible(False)
    ax2.axis[(u'top', u'right')].set_visible(True)
    ax2.axis[(u'left', u'bottom')].set_visible(False)
    def _remove_method(h):
        self.parasites.remove(h)
        self.axis[(u'top', u'right')].set_visible(True)
        self.axis[(u'top', u'right')].toggle(ticklabels=False, label=False)
    ax2._remove_method = _remove_method
    return ax2
