In [1]:
from bokeh.io import output_notebook, show
output_notebook()


Loading BokehJS ...

In [2]:
from bokeh.charts import Donut

def pie_chart(values, labels, title):
    data = {'values': values}
    # Calculate percents for each value, used as wedge labels.
    data['percents'] = ['{:0.2f}'.format(100 * amount / sum(data['values']))
                        for amount in data['values']]
    donut = Donut(data, values='values', legend='top_left',
                  labels=labels, label='percents', title=title)
    return donut

In [3]:
show(pie_chart([2, 3], ['a', 'b'], 'test chart'))


Out[3]:

<Bokeh Notebook handle for In[3]>


In [4]:
import pandas as pd
from bokeh.charts.utils import df_from_json
from bokeh.sampledata.olympics2014 import data

# utilize utility to make it easy to get json/dict data converted to a dataframe
df = df_from_json(data)

# filter by countries with at least one medal and sort by total medals
df = df[df['total'] > 8]
df = df.sort("total", ascending=False)
df = pd.melt(df, id_vars=['abbr'],
             value_vars=['bronze', 'silver', 'gold'],
             value_name='medal_count', var_name='medal')

# original example
d = Donut(df, label=['abbr', 'medal'], values='medal_count', legend='top_left',
          text_font_size='8pt', hover_text='medal_count')
show(d)


/Users/caged/miniconda3/envs/bokeh_miscellany/lib/python3.5/site-packages/ipykernel/__main__.py:10: FutureWarning: sort(columns=....) is deprecated, use sort_values(by=.....)
Out[4]:

<Bokeh Notebook handle for In[4]>


In [10]:
pie = pie_chart([2, 3], ['a', 'b'], 'test chart')

In [13]:
from bokeh.models import Legend
legend = pie.select_one(Legend)

In [20]:
legend.legends = [
    ('a', [pie.renderers[1]]),
    ('b', [pie.renderers[2]])
]

In [21]:
show(pie)


Out[21]:

<Bokeh Notebook handle for In[21]>


In [22]:
pie.renderers


Out[22]:
[<bokeh.models.annotations.BoxAnnotation at 0x10cdf77f0>,
 <bokeh.models.renderers.GlyphRenderer at 0x10cceb8d0>,
 <bokeh.models.renderers.GlyphRenderer at 0x10cdfdda0>,
 <bokeh.models.annotations.Legend at 0x10cdfd400>,
 <bokeh.models.axes.LinearAxis at 0x10cdfd0f0>,
 <bokeh.models.axes.LinearAxis at 0x10cdfd080>]

In [26]:
wedge = pie.renderers[1].glyph

In [27]:
wedge.fill_color


Out[27]:
'color'

In [ ]: