diff --git a/plotly/matplotlylib/renderer.py b/plotly/matplotlylib/renderer.py index e05a046607a..28f36038706 100644 --- a/plotly/matplotlylib/renderer.py +++ b/plotly/matplotlylib/renderer.py @@ -371,6 +371,12 @@ def draw_legend_shapes(self, mode, shape, **props): x1 = props["data"][1][0] y1 = props["data"][1][1] + lines_shape = shape.copy() + ignored_props = ["symbol", "size"] + for prop in ignored_props: + if prop in lines_shape: + lines_shape.pop(prop) + legend_shape = go.layout.Shape( type=mode, xref="paper", @@ -379,7 +385,7 @@ def draw_legend_shapes(self, mode, shape, **props): y0=y + 0.02, x1=x1, y1=y1 + 0.02, - **shape, + **lines_shape, ) else: self.msg += "not sure how to handle this element\n" diff --git a/plotly/matplotlylib/tests/__init__.py b/plotly/matplotlylib/tests/__init__.py new file mode 100644 index 00000000000..c29e9896d61 --- /dev/null +++ b/plotly/matplotlylib/tests/__init__.py @@ -0,0 +1,4 @@ +import matplotlib + +matplotlib.use("Agg") +import matplotlib.pyplot as plt diff --git a/plotly/matplotlylib/tests/test_renderer.py b/plotly/matplotlylib/tests/test_renderer.py new file mode 100644 index 00000000000..2c82f07de51 --- /dev/null +++ b/plotly/matplotlylib/tests/test_renderer.py @@ -0,0 +1,18 @@ +import plotly.tools as tls + +from . import plt + +def test_lines_markers_legend_plot(): + x = [0, 1] + y = [0, 1] + label = "label" + plt.figure() + plt.plot(x, y, "o-", label=label) + plt.legend() + + plotly_fig = tls.mpl_to_plotly(plt.gcf()) + + assert plotly_fig.data[0].mode == "lines+markers" + assert plotly_fig.data[0].x == tuple(x) + assert plotly_fig.data[0].y == tuple(y) + assert plotly_fig.data[0].name == "label"