'Setup a new axes object (subplot in plotly).
Plotly stores information about subplots in different \'xaxis\' and
\'yaxis\' objects which are numbered. These are just dictionaries
included in the layout dictionary. This function takes information
from the Exporter, fills in appropriate dictionary entries,
and updates the layout dictionary. PlotlyRenderer keeps track of the
number of plots by incrementing the axis_ct attribute.
Setting the proper plot domain in plotly is a bit tricky. Refer to
the documentation for mpltools.convert_x_domain and
mpltools.convert_y_domain.
Positional arguments:
ax -- an mpl axes object. This will become a subplot in plotly.
props.keys() -- [
\'axesbg\',           (background color for axes obj)
\'axesbgalpha\',      (alpha, or opacity for background)
\'bounds\',           ((x0, y0, width, height) for axes)
\'dynamic\',          (zoom/pan-able?)
\'axes\',             (list: [xaxis, yaxis])
\'xscale\',           (log, linear, or date)
\'yscale\',
\'xlim\',             (range limits for x)
\'ylim\',
\'xdomain\'           (xdomain=xlim, unless it\'s a date)
\'ydomain\''

def open_axes(self, ax, props):

    self.msg += '        Opening    axes\n'
    self.current_mpl_ax = ax
    self.bar_containers = [c for c in ax.containers if (c.__class__.__name__ == 'BarContainer')]
    self.current_bars = []
    self.axis_ct += 1
    xaxis = go.XAxis(anchor='y{0}'.format(self.axis_ct), zeroline=False, ticks='inside')
    yaxis = go.YAxis(anchor='x{0}'.format(self.axis_ct), zeroline=False, ticks='inside')
    (mpl_xaxis, mpl_yaxis) = mpltools.prep_xy_axis(ax=ax, props=props, x_bounds=self.mpl_x_bounds, y_bounds=self.mpl_y_bounds)
    xaxis.update(mpl_xaxis)
    yaxis.update(mpl_yaxis)
    bottom_spine = mpltools.get_spine_visible(ax, 'bottom')
    top_spine = mpltools.get_spine_visible(ax, 'top')
    left_spine = mpltools.get_spine_visible(ax, 'left')
    right_spine = mpltools.get_spine_visible(ax, 'right')
    xaxis['mirror'] = mpltools.get_axis_mirror(bottom_spine, top_spine)
    yaxis['mirror'] = mpltools.get_axis_mirror(left_spine, right_spine)
    xaxis['showline'] = bottom_spine
    yaxis['showline'] = top_spine
    self.plotly_fig['layout']['xaxis{0}'.format(self.axis_ct)] = xaxis
    self.plotly_fig['layout']['yaxis{0}'.format(self.axis_ct)] = yaxis
    if (xaxis.get('type') == 'date'):
        self.x_is_mpl_date = True
