diff --git a/holoviews/plotting/mpl/chart.py b/holoviews/plotting/mpl/chart.py
index <HASH>..<HASH> 100644
--- a/holoviews/plotting/mpl/chart.py
+++ b/holoviews/plotting/mpl/chart.py
@@ -20,6 +20,9 @@ from .plot import AdjoinedPlot
 
 class ChartPlot(ElementPlot):
 
+    show_legend = param.Boolean(default=True, doc="""
+        Whether to show legend for the plot.""")
+
     def __init__(self, data, **params):
         super(ChartPlot, self).__init__(data, **params)
         key_dim = self.hmap.last.get_dimension(0)
diff --git a/holoviews/plotting/mpl/element.py b/holoviews/plotting/mpl/element.py
index <HASH>..<HASH> 100644
--- a/holoviews/plotting/mpl/element.py
+++ b/holoviews/plotting/mpl/element.py
@@ -625,7 +625,7 @@ class OverlayPlot(LegendPlot, GenericOverlayPlot):
             else:
                 if isinstance(subplot, OverlayPlot):
                     legend_data += subplot.handles.get('legend_data', {}).items()
-                if element and element.label and handle:
+                if element.label and handle:
                     legend_data.append((handle, element.label))
         all_handles, all_labels = list(zip(*legend_data)) if legend_data else ([], [])
         data = OrderedDict()
Further minor fixes to matplotlib legends