In [2]:
from bokeh.io import output_notebook, show
from bokeh.plotting import figure
from bokeh.models import ColumnDataSource
from bokeh.palettes import Spectral4

In [3]:
output_notebook()


Loading BokehJS ...

In [15]:
p = figure(tools='hover')
p.circle(
    x=[1, 2, 3, 4],
    y=[2, 4, 5, 6],
    radius=0.5,
    fill_color=Spectral4, line_color=None, fill_alpha=0.6,
    hover_fill_color='pink', hover_line_color=None, hover_fill_alpha=0.1,
)
show(p)


Out[15]:

<Bokeh Notebook handle for In[15]>


In [16]:
p = figure(tools='hover')
p.circle(
    x=[1, 2, 3, 4],
    y=[2, 4, 5, 6],
    radius=0.5,
    fill_color=Spectral4, line_color=None, fill_alpha=0.6,
    hover_fill_color=Spectral4, hover_line_color=None, hover_fill_alpha=0.1,
)
show(p)


---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-16-ac2274fc1d9c> in <module>()
      5     radius=0.5,
      6     fill_color=Spectral4, line_color=None, fill_alpha=0.6,
----> 7     hover_fill_color=Spectral4, hover_line_color=None, hover_fill_alpha=0.1,
      8 )
      9 show(p)

/Users/caged/miniconda3/envs/bokeh_miscellany/lib/python3.5/site-packages/bokeh/plotting/helpers.py in func(self, *args, **kwargs)
    468         glyph = _make_glyph(glyphclass, kwargs, glyph_ca)
    469         nsglyph = _make_glyph(glyphclass, kwargs, nsglyph_ca)
--> 470         hglyph = _make_glyph(glyphclass, kwargs, hglyph_ca)
    471         sglyph = _make_glyph(glyphclass, kwargs, sglyph_ca)
    472 

/Users/caged/miniconda3/envs/bokeh_miscellany/lib/python3.5/site-packages/bokeh/plotting/helpers.py in _make_glyph(glyphclass, kws, extra)
    129         kws = kws.copy()
    130         kws.update(extra)
--> 131         return glyphclass(**kws)
    132 
    133 def _update_legend(plot, legend_name, glyph_renderer):

/Users/caged/miniconda3/envs/bokeh_miscellany/lib/python3.5/site-packages/bokeh/model.py in __init__(self, **kwargs)
     81         self._id = kwargs.pop("id", make_id())
     82         self._document = None
---> 83         super(Model, self).__init__(**kwargs)
     84         default_theme.apply_to_model(self)
     85 

/Users/caged/miniconda3/envs/bokeh_miscellany/lib/python3.5/site-packages/bokeh/core/properties.py in __init__(self, **properties)
    699 
    700         for name, value in properties.items():
--> 701             setattr(self, name, value)
    702 
    703     def __setattr__(self, name, value):

/Users/caged/miniconda3/envs/bokeh_miscellany/lib/python3.5/site-packages/bokeh/core/properties.py in __setattr__(self, name, value)
    712 
    713         if name in props or name in deprecated:
--> 714             super(HasProps, self).__setattr__(name, value)
    715         else:
    716             matches, text = difflib.get_close_matches(name.lower(), props), "similar"

/Users/caged/miniconda3/envs/bokeh_miscellany/lib/python3.5/site-packages/bokeh/core/properties.py in __set__(self, obj, value)
    451             raise RuntimeError("Cannot set a property value '%s' on a %s instance before HasProps.__init__" %
    452                                (self.name, obj.__class__.__name__))
--> 453         value = self.descriptor.prepare_value(obj.__class__, self.name, value)
    454 
    455         old = self.__get__(obj)

/Users/caged/miniconda3/envs/bokeh_miscellany/lib/python3.5/site-packages/bokeh/core/properties.py in prepare_value(self, cls, name, value)
    270                     break
    271             else:
--> 272                 raise e
    273         else:
    274             value = self.transform(value)

/Users/caged/miniconda3/envs/bokeh_miscellany/lib/python3.5/site-packages/bokeh/core/properties.py in prepare_value(self, cls, name, value)
    263     def prepare_value(self, cls, name, value):
    264         try:
--> 265             self.validate(value)
    266         except ValueError as e:
    267             for tp, converter in self.alternatives:

/Users/caged/miniconda3/envs/bokeh_miscellany/lib/python3.5/site-packages/bokeh/core/properties.py in validate(self, value)
   1845                 return True
   1846             else:
-> 1847                 raise e
   1848 
   1849     def transform(self, value):

/Users/caged/miniconda3/envs/bokeh_miscellany/lib/python3.5/site-packages/bokeh/core/properties.py in validate(self, value)
   1839     def validate(self, value):
   1840         try:
-> 1841             return super(ColorSpec, self).validate(value)
   1842         except ValueError as e:
   1843             # Check for tuple input if not yet a valid input type

/Users/caged/miniconda3/envs/bokeh_miscellany/lib/python3.5/site-packages/bokeh/core/properties.py in validate(self, value)
   1296 
   1297         if not (value is None or any(param.is_valid(value) for param in self.type_params)):
-> 1298             raise ValueError("expected an element of either %s, got %r" % (nice_join(self.type_params), value))
   1299 
   1300     def transform(self, value):

ValueError: expected an element of either String, Dict(String, Either(String, Color)) or Color, got ['#2b83ba', '#abdda4', '#fdae61', '#d7191c']

In [21]:
p = figure(tools='hover')
source = ColumnDataSource(
    {
        'x': [1, 2, 3, 4],
        'y': [2, 4, 5, 6],     
        'color': Spectral4,
    }
)
p.circle(
    x='x',
    y='y',
    radius=0.5,
    fill_color='color', line_color=None, fill_alpha=0.5,
    hover_fill_color='color', hover_line_color=None, hover_fill_alpha=0.9,
    source=source
)
show(p)


Out[21]:

<Bokeh Notebook handle for In[21]>


In [ ]: