'Create a data dict for a line obj.
This will draw \'lines\', \'markers\', or \'lines+markers\'.
props.keys() -- [
\'coordinates\',  (\'data\', \'axes\', \'figure\', or \'display\')
\'data\',         (a list of xy pairs)
\'mplobj\',       (the matplotlib.lines.Line2D obj being rendered)
\'label\',        (the name of the Line2D obj being rendered)
\'linestyle\',    (linestyle dict, can be None, see below)
\'markerstyle\',  (markerstyle dict, can be None, see below)
props[\'linestyle\'].keys() -- [
\'alpha\',        (opacity of Line2D obj)
\'color\',        (color of the line if it exists, not the marker)
\'linewidth\',
\'dasharray\',    (code for linestyle, see DASH_MAP in mpltools.py)
\'zorder\',       (viewing precedence when stacked with other objects)
props[\'markerstyle\'].keys() -- [
\'alpha\',        (opacity of Line2D obj)
\'marker\',       (the mpl marker symbol, see SYMBOL_MAP in mpltools.py)
\'facecolor\',    (color of the marker face)
\'edgecolor\',    (color of the marker edge)
\'edgewidth\',    (width of marker edge)
\'markerpath\',   (an SVG path for drawing the specified marker)
\'zorder\',       (viewing precedence when stacked with other objects)'

def draw_marked_line(self, **props):

    self.msg += '                Attempting    to    draw    a    line    '
    (line, marker) = ({}, {})
    if (props['linestyle'] and props['markerstyle']):
        self.msg += '...    with    both    lines+markers\n'
        mode = 'lines+markers'
    elif props['linestyle']:
        self.msg += '...    with    just    lines\n'
        mode = 'lines'
    elif props['markerstyle']:
        self.msg += '...    with    just    markers\n'
        mode = 'markers'
    if props['linestyle']:
        color = mpltools.merge_color_and_opacity(props['linestyle']['color'], props['linestyle']['alpha'])
        line = go.Line(color=color, width=props['linestyle']['linewidth'], dash=mpltools.convert_dash(props['linestyle']['dasharray']))
    if props['markerstyle']:
        marker = go.Marker(opacity=props['markerstyle']['alpha'], color=props['markerstyle']['facecolor'], symbol=mpltools.convert_symbol(props['markerstyle']['marker']), size=props['markerstyle']['markersize'], line=go.Line(color=props['markerstyle']['edgecolor'], width=props['markerstyle']['edgewidth']))
    if (props['coordinates'] == 'data'):
        marked_line = go.Scatter(mode=mode, name=props['label'], x=[xy_pair[0] for xy_pair in props['data']], y=[xy_pair[1] for xy_pair in props['data']], xaxis='x{0}'.format(self.axis_ct), yaxis='y{0}'.format(self.axis_ct), line=line, marker=marker)
        if self.x_is_mpl_date:
            formatter = self.current_mpl_ax.get_xaxis().get_major_formatter().__class__.__name__
            marked_line['x'] = mpltools.mpl_dates_to_datestrings(marked_line['x'], formatter)
        self.plotly_fig['data'] += (marked_line,)
        self.msg += '                Heck    yeah,    I    drew    that    line\n'
    else:
        self.msg += "                Line    didn't    have    'data'    coordinates,    not    drawing\n"
        warnings.warn("Bummer!    Plotly    can    currently    only    draw    Line2D    objects    from    matplotlib    that    are    in    'data'    coordinates!")
