Repository: holoviz/hvplot

Issue:
hover broken for datashade
![image](https://user-images.githubusercontent.com/15331990/57197482-9ae55900-6f1c-11e9-9618-569704891b4b.png)

```
import pandas as pd
import hvplot.pandas

tst = pd.DataFrame([0, 1, 2])

tst.hvplot('index', 0, datashade=True)
```


Discussion:
Yeah, we should suppress hover for datashade output by default since it's not useful and fix the underlying issue in holoviews.
The RGBA value is now displayed but as a int which is useless so we should disable it.
I'd prefer to display it as hex or a four tuple, rather that omit it, but I don't know how difficult that is.
That's a holoviews issue, the issue here is that hvplot displays hover info by default but I do not think it should do so for RGB by default, even if it was a hex.
I think suppressing hover for datashade, or at least disabling it by default will close #271

Resolving patch:
diff --git a/hvplot/converter.py b/hvplot/converter.py
--- a/hvplot/converter.py
+++ b/hvplot/converter.py
@@ -85,8 +85,9 @@ class HoloViewsConverter(object):
         Whether to flip the axis left to right or up and down respectively
     grid (default=False): boolean
         Whether to show a grid
-    hover (default=True): boolean
-        Whether to show hover tooltips
+    hover : boolean
+        Whether to show hover tooltips, default is True unless datashade is
+        True in which case hover is False by default
     hover_cols (default=[]): list
         Additional columns to add to the hover tool
     invert (default=False): boolean
@@ -279,7 +280,7 @@ def __init__(self, data, x, y, kind=None, by=None, use_index=True,
                  crs=None, fields={}, groupby=None, dynamic=True,
                  grid=None, legend=None, rot=None, title=None,
                  xlim=None, ylim=None, clim=None,
-                 logx=None, logy=None, loglog=None, hover=True,
+                 logx=None, logy=None, loglog=None, hover=None,
                  subplots=False, label=None, invert=False,
                  stacked=False, colorbar=None, fontsize=None,
                  datashade=False, rasterize=False,
@@ -430,6 +431,8 @@ def __init__(self, data, x, y, kind=None, by=None, use_index=True,
             plot_opts[axis] = rot
 
         tools = list(tools) or list(plot_opts.get('tools', []))
+        if hover is None:
+            hover = not self.datashade
         if hover and not any(t for t in tools if isinstance(t, HoverTool)
                              or t == 'hover'):
             tools.append('hover')


Test patch:
diff --git a/hvplot/tests/testoperations.py b/hvplot/tests/testoperations.py
--- a/hvplot/tests/testoperations.py
+++ b/hvplot/tests/testoperations.py
@@ -79,6 +79,16 @@ def test_cmap_can_be_color_key(self):
         color_key = {'A': '#ff0000', 'B': '#00ff00', 'C': '#0000ff'}
         self.df.hvplot.points(x='x', y='y', by='category', cmap=color_key, datashade=True)
 
+    def test_when_datashade_is_true_set_hover_to_false_by_default(self):
+        plot = self.df.hvplot(x='x', y='y', datashade=True)
+        opts = Store.lookup_options('bokeh', plot[0], 'plot').kwargs
+        assert 'hover' not in opts.get('tools')
+
+    def test_when_datashade_is_true_hover_can_still_be_true(self):
+        plot = self.df.hvplot(x='x', y='y', datashade=True, hover=True)
+        opts = Store.lookup_options('bokeh', plot[0], 'plot').kwargs
+        assert 'hover' in opts.get('tools')
+
 
 class TestChart2D(ComparisonTestCase):