Help - unable to plot simple bar graph!

I think the matplotlib api may be too ingrained in me as I can’t figure out how to use bokeh to create a simple bar graph.

I’m probably just having a brain-freeze but I’ve referred to the examples and tried multiple things with no luck so would greatly appreciate it if someone please show me how to use the bokeh api to replicate the below plot?

On the plus side it will probably be a useful example for others used to the pandas/matplotlib api.

index = pd.Index([1,2,3,4,5], label=‘period’)

columns = pd.Index([‘A’, ‘B’, ‘C’], label=‘categories’)

values = randint(10, 100, 15).reshape(5, 3)

values.sort(axis=0)

df = pd.DataFrame(values, index, columns)

df.plot.bar(stacked=True)

i.e. the index of the DataFrame contains the x-axis labels, the columns are the categories to stack and the values are the values for each label/category

TIA,

Dave

My closest attempt was:

fig = Bar(

df,

label='index',

values=blend(*['A', 'B', 'C'], labels_name='categories'),

stack=cat(columns='categories', sort=False),

width=900, height=600,

)

plt.show(fig)

…but this plots 14 values on the x-axis (and I have no idea why?!)

···

On Wednesday, 27 April 2016 12:21:28 UTC+10, [email protected] wrote:

I think the matplotlib api may be too ingrained in me as I can’t figure out how to use bokeh to create a simple bar graph.

I’m probably just having a brain-freeze but I’ve referred to the examples and tried multiple things with no luck so would greatly appreciate it if someone please show me how to use the bokeh api to replicate the below plot?

On the plus side it will probably be a useful example for others used to the pandas/matplotlib api.

index = pd.Index([1,2,3,4,5], label=‘period’)

columns = pd.Index([‘A’, ‘B’, ‘C’], label=‘categories’)

values = randint(10, 100, 15).reshape(5, 3)

values.sort(axis=0)

df = pd.DataFrame(values, index, columns)

df.plot.bar(stacked=True)

i.e. the index of the DataFrame contains the x-axis labels, the columns are the categories to stack and the values are the values for each label/category

TIA,

Dave

I’m not sure, as I’m on my phone.

···

But I’d suggest trying reset_index to get your index as a column and then asking for that to be your label.

The charts api manipulates your dataframe to get all the bits it needs for your columns and it maybe that index points at the wrong thing.

Sarah Bird
[email protected]

On Apr 26, 2016, at 7:36 PM, [email protected] wrote:

My closest attempt was:

fig = Bar(

df,
label='index',
values=blend(*['A', 'B', 'C'], labels_name='categories'),
stack=cat(columns='categories', sort=False),
width=900, height=600,

)

plt.show(fig)

…but this plots 14 values on the x-axis (and I have no idea why?!)

On Wednesday, 27 April 2016 12:21:28 UTC+10, nov…@gmail.com wrote:

I think the matplotlib api may be too ingrained in me as I can’t figure out how to use bokeh to create a simple bar graph.

I’m probably just having a brain-freeze but I’ve referred to the examples and tried multiple things with no luck so would greatly appreciate it if someone please show me how to use the bokeh api to replicate the below plot?

On the plus side it will probably be a useful example for others used to the pandas/matplotlib api.

index = pd.Index([1,2,3,4,5], label=‘period’)

columns = pd.Index([‘A’, ‘B’, ‘C’], label=‘categories’)

values = randint(10, 100, 15).reshape(5, 3)

values.sort(axis=0)

df = pd.DataFrame(values, index, columns)

df.plot.bar(stacked=True)

i.e. the index of the DataFrame contains the x-axis labels, the columns are the categories to stack and the values are the values for each label/category

TIA,

Dave

You received this message because you are subscribed to the Google Groups “Bokeh Discussion - Public” group.

To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].

To post to this group, send email to [email protected].

To view this discussion on the web visit https://groups.google.com/a/continuum.io/d/msgid/bokeh/1942a4e9-7f8e-488f-a51e-d2b9f2274070%40continuum.io.

For more options, visit https://groups.google.com/a/continuum.io/d/optout.

Thanks for the quick reply, but that doesn’t seem to make a difference.

For ease of reproducing, my failed attempts are available at Notebook :: Anaconda.org

Thanks,

Dave

···

On Wednesday, 27 April 2016 13:15:05 UTC+10, Sarah Bird wrote:

I’m not sure, as I’m on my phone.

But I’d suggest trying reset_index to get your index as a column and then asking for that to be your label.

The charts api manipulates your dataframe to get all the bits it needs for your columns and it maybe that index points at the wrong thing.

Sarah Bird
[email protected]

On Apr 26, 2016, at 7:36 PM, [email protected] wrote:

My closest attempt was:

fig = Bar(

df,
label='index',
values=blend(*['A', 'B', 'C'], labels_name='categories'),
stack=cat(columns='categories', sort=False),
width=900, height=600,

)

plt.show(fig)

…but this plots 14 values on the x-axis (and I have no idea why?!)

On Wednesday, 27 April 2016 12:21:28 UTC+10, nov…@gmail.com wrote:

I think the matplotlib api may be too ingrained in me as I can’t figure out how to use bokeh to create a simple bar graph.

I’m probably just having a brain-freeze but I’ve referred to the examples and tried multiple things with no luck so would greatly appreciate it if someone please show me how to use the bokeh api to replicate the below plot?

On the plus side it will probably be a useful example for others used to the pandas/matplotlib api.

index = pd.Index([1,2,3,4,5], label=‘period’)

columns = pd.Index([‘A’, ‘B’, ‘C’], label=‘categories’)

values = randint(10, 100, 15).reshape(5, 3)

values.sort(axis=0)

df = pd.DataFrame(values, index, columns)

df.plot.bar(stacked=True)

i.e. the index of the DataFrame contains the x-axis labels, the columns are the categories to stack and the values are the values for each label/category

TIA,

Dave

You received this message because you are subscribed to the Google Groups “Bokeh Discussion - Public” group.

To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].

To post to this group, send email to [email protected].

To view this discussion on the web visit https://groups.google.com/a/continuum.io/d/msgid/bokeh/1942a4e9-7f8e-488f-a51e-d2b9f2274070%40continuum.io.

For more options, visit https://groups.google.com/a/continuum.io/d/optout.

It also appears that Bar modifies the DataFrame inplace though that doesn’t appear to be the cause of my problems…

-Dave

···

On Wednesday, 27 April 2016 13:42:30 UTC+10, [email protected] wrote:

Thanks for the quick reply, but that doesn’t seem to make a difference.

For ease of reproducing, my failed attempts are available at https://anaconda.org/dhirschfeld/bokeh-stacked-bar/notebook

Thanks,

Dave

On Wednesday, 27 April 2016 13:15:05 UTC+10, Sarah Bird wrote:

I’m not sure, as I’m on my phone.

But I’d suggest trying reset_index to get your index as a column and then asking for that to be your label.

The charts api manipulates your dataframe to get all the bits it needs for your columns and it maybe that index points at the wrong thing.

Sarah Bird
[email protected]

On Apr 26, 2016, at 7:36 PM, [email protected] wrote:

My closest attempt was:

fig = Bar(

df,
label='index',
values=blend(*['A', 'B', 'C'], labels_name='categories'),
stack=cat(columns='categories', sort=False),
width=900, height=600,

)

plt.show(fig)

…but this plots 14 values on the x-axis (and I have no idea why?!)

On Wednesday, 27 April 2016 12:21:28 UTC+10, nov…@gmail.com wrote:

I think the matplotlib api may be too ingrained in me as I can’t figure out how to use bokeh to create a simple bar graph.

I’m probably just having a brain-freeze but I’ve referred to the examples and tried multiple things with no luck so would greatly appreciate it if someone please show me how to use the bokeh api to replicate the below plot?

On the plus side it will probably be a useful example for others used to the pandas/matplotlib api.

index = pd.Index([1,2,3,4,5], label=‘period’)

columns = pd.Index([‘A’, ‘B’, ‘C’], label=‘categories’)

values = randint(10, 100, 15).reshape(5, 3)

values.sort(axis=0)

df = pd.DataFrame(values, index, columns)

df.plot.bar(stacked=True)

i.e. the index of the DataFrame contains the x-axis labels, the columns are the categories to stack and the values are the values for each label/category

TIA,

Dave

You received this message because you are subscribed to the Google Groups “Bokeh Discussion - Public” group.

To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].

To post to this group, send email to [email protected].

To view this discussion on the web visit https://groups.google.com/a/continuum.io/d/msgid/bokeh/1942a4e9-7f8e-488f-a51e-d2b9f2274070%40continuum.io.

For more options, visit https://groups.google.com/a/continuum.io/d/optout.

yes. i think a fix for
this was submitted recently and will be in the next release.

                          will take a look in the

morning.

···

On 4/26/16 10:52 PM, wrote:

[email protected]

    It also appears that Bar modifies the DataFrame

inplace though that doesn’t appear to be the cause of my
problems…

-Dave

        On Wednesday, 27 April 2016 13:42:30 UTC+10,

wrote:

  You received this message because you are subscribed to the Google

Groups “Bokeh Discussion - Public” group.

  To unsubscribe from this group and stop receiving emails from it,

send an email to [email protected].

  To post to this group, send email to [email protected].

  To view this discussion on the web visit [](https://groups.google.com/a/continuum.io/d/msgid/bokeh/c4725c33-4f3b-410f-bef8-f67d805eee93%40continuum.io?utm_medium=email&utm_source=footer)      .

For more options, visit .


Sarah Bird
Developer, Bokeh

    [
      ![Continuum Analytics](http://docs.continuum.io/_static/img/ContinuumWordmark.png)
    ](http://continuum.io)

[email protected]

            Thanks for the quick reply, but that

doesn’t seem to make a difference.

              For ease of reproducing, my failed attempts are

available at https://anaconda.org/dhirschfeld/bokeh-stacked-bar/notebook

Thanks,

Dave

                On Wednesday, 27 April 2016 13:15:05 UTC+10, Sarah

Bird wrote:

I’m not sure, as I’m on my phone.

                      But I'd suggest trying reset_index to get

your index as a column and then asking for
that to be your label.

                      The charts api manipulates your dataframe

to get all the bits it needs for your columns
and it maybe that index points at the wrong
thing.

                      Sarah Bird

[email protected]

                      On Apr 26, 2016, at 7:36 PM,
                      wrote:

My closest attempt was:

                                fig

= Bar(

df,

label=‘index’,

values=blend(*[‘A’, ‘B’, ‘C’],
labels_name=‘categories’),

stack=cat(columns=‘categories’ ,
sort=False),

width=900, height=600,

)

plt.show(fig)

                            ...but this plots 14 values on the

x-axis (and I have no idea why?!)

                            On Wednesday, 27 April 2016 12:21:28

UTC+10, nov…@gmail.com wrote:

                                I think the matplotlib

api may be too ingrained in me as I
can’t figure out how to use bokeh to
create a simple bar graph.

                                  I'm probably just having a

brain-freeze but I’ve referred to
the examples and tried multiple
things with no luck so would
greatly appreciate it if someone
please show me how to use the
bokeh api to replicate the below
plot?

                                  On the plus side it will

probably be a useful example for
others used to the
pandas/matplotlib api.

                                      index =

pd.Index([1,2,3,4,5],
label=‘period’)

                                      columns =

pd.Index([‘A’, ‘B’, ‘C’],
label=‘categories’)

                                      values =

randint(10, 100,
15).reshape(5, 3)

values.sort(axis=0)

                                      df =

pd.DataFrame(values, index,
columns)

df.plot.bar(stacked=True)

                                  i.e. the index of the DataFrame

contains the x-axis labels, the
columns are the categories to
stack and the values are the
values for each label/category

TIA,

Dave

                        You received this message because you are

subscribed to the Google Groups “Bokeh
Discussion - Public” group.

                        To unsubscribe from this group and stop

receiving emails from it, send an email to .
To post to this group, send email to .
To view this discussion on the web visit

[email protected]

[email protected]
[email protected]
https://groups.google.com/a/continuum.io/d/msgid/bokeh/1942a4e9-7f8e-488f-a51e-d2b9f2274070%40continuum.io.

                        For more options, visit [](https://groups.google.com/a/continuum.io/d/optout)[https://groups.google.com/a/](https://groups.google.com/a/)continuum.io/d/optout.

                      [https://groups.google.com/a/continuum.io/d/msgid/bokeh/c4725c33-4f3b-410f-bef8-f67d805eee93%40continuum.io](https://groups.google.com/a/continuum.io/d/msgid/bokeh/c4725c33-4f3b-410f-bef8-f67d805eee93%40continuum.io)

https://groups.google.com/a/continuum.io/d/optout

Hi,

Charts prefers long data. I learned this from here:

So I re-made your dataframe into long data, from there it was pretty
straight forward:
Bar(long_df, label=‘period’, values=‘value’, stack=‘cat’,
legend=True)
Best,
Bird

···

http://nbviewer.jupyter.org/github/bokeh/bokeh/blob/0.11.1/examples/howto/charts/deep_dive.ipynb

http://nbviewer.jupyter.org/github/birdsarah/bokeh-miscellany/blob/master/stack_bar_pivot_table.ipynb

  On 4/26/16 11:02 PM, Sarah Bird -

Continuum wrote:

      yes. i think a fix for

this was submitted recently and will be in the next release.

                              will take a look in the

morning.


Sarah Bird
Developer, Bokeh

    [
      ![Continuum Analytics](http://docs.continuum.io/_static/img/ContinuumWordmark.png)
    ](http://continuum.io)

On 4/26/16 10:52 PM, wrote:

[email protected]

      It also appears that Bar modifies the DataFrame

inplace though that doesn’t appear to be the cause of my
problems…

-Dave

          On Wednesday, 27 April 2016 13:42:30 UTC+10, wrote:

    You received this message because you are subscribed to the

Google Groups “Bokeh Discussion - Public” group.

    To unsubscribe from this group and stop receiving emails from

it, send an email to [email protected].

    To post to this group, send email to [email protected].

    To view this discussion on the web visit .

For more options, visit .
[email protected]
Thanks for the quick reply, but that
doesn’t seem to make a difference.

                For ease of reproducing, my failed attempts are

available at https://anaconda.org/dhirschfeld/bokeh-stacked-bar/notebook

Thanks,

Dave

                  On Wednesday, 27 April 2016 13:15:05 UTC+10, Sarah

Bird wrote:

I’m not sure, as I’m on my phone.

                        But I'd suggest trying reset_index to get

your index as a column and then asking for
that to be your label.

                        The charts api manipulates your dataframe

to get all the bits it needs for your
columns and it maybe that index points at
the wrong thing.

                        Sarah Bird

[email protected]

                        On Apr 26, 2016, at 7:36 PM, wrote:

My closest attempt was:

fig = Bar(

df,
label='index',
                                      values=blend(*['A',

‘B’, ‘C’],
labels_name=‘categories’),

stack=cat(columns=‘categories’ ,
sort=False),

                                      width=900,

height=600,

)

plt.show(fig)

                              ...but this plots 14 values on the

x-axis (and I have no idea why?!)

                              On Wednesday, 27 April 2016 12:21:28

UTC+10, nov…@gmail.com wrote:

                                  I think the

matplotlib api may be too
ingrained in me as I can’t figure
out how to use bokeh to create a
simple bar graph.

                                    I'm probably just having a

brain-freeze but I’ve referred
to the examples and tried
multiple things with no luck so
would greatly appreciate it if
someone please show me how to
use the bokeh api to replicate
the below plot?

                                    On the plus side it will

probably be a useful example for
others used to the
pandas/matplotlib api.

                                        index =

pd.Index([1,2,3,4,5],
label=‘period’)

                                        columns =

pd.Index([‘A’, ‘B’, ‘C’],
label=‘categories’)

                                        values =

randint(10, 100,
15).reshape(5, 3)

values.sort(axis=0)

                                        df =

pd.DataFrame(values, index,
columns)

df.plot.bar(stacked=True)

                                    i.e. the index of the

DataFrame contains the x-axis
labels, the columns are the
categories to stack and the
values are the values for each
label/category

TIA,

Dave

                          You received this message because you are

subscribed to the Google Groups “Bokeh
Discussion - Public” group.

                          To unsubscribe from this group and stop

receiving emails from it, send an email to
.
To post to this group, send email to .
To view this discussion on the web visit

[email protected]

[email protected]
[email protected]
https://groups.google.com/a/continuum.io/d/msgid/bokeh/1942a4e9-7f8e-488f-a51e-d2b9f2274070%40continuum.io.

                          For more options, visit [](https://groups.google.com/a/)[https://groups.google.com/a/](https://groups.google.com/a/)continuum.io/d/optout.

                        [](https://groups.google.com/a/continuum.io/d/msgid/bokeh/c4725c33-4f3b-410f-bef8-f67d805eee93%40continuum.io)[https://groups.google.com/a/continuum.io/d/msgid/bokeh/c4725c33-4f3b-410f-bef8-f67d805eee93%40continuum.io](https://groups.google.com/a/continuum.io/d/msgid/bokeh/c4725c33-4f3b-410f-bef8-f67d805eee93%40continuum.io)

https://groups.google.com/a/continuum.io/d/optout


Sarah Bird
Developer, Bokeh

      [ ![Continuum Analytics](http://docs.continuum.io/_static/img/ContinuumWordmark.png) ](http://continuum.io)

Hi,

You were almost there :slight_smile:

The problem in this case is that you’d like the “new” dataframe (created from using the blend operator) to be grouped index and then stacked by the new categories column. The problem here is that the index of the original dataframe is not consistent with the new dataframe after blending. So you basically need to create a new column to create an explicit series to label to. In your case:

df[‘label’] = df.index

fig = Bar(

df,

label=‘label’,

values=blend(*[‘A’, ‘B’, ‘C’], labels_name=‘categories’),

stack=cat(columns=‘categories’, sort=False),

width=900, height=600, legend=True

)

``

Should create the output you are looking for. Please let me know if that works :slight_smile:

Cheers

Fabio

···

On Tuesday, April 26, 2016 at 9:36:14 PM UTC-5, [email protected] wrote:

My closest attempt was:

fig = Bar(

df,
label='index',
values=blend(*['A', 'B', 'C'], labels_name='categories'),
stack=cat(columns='categories', sort=False),
width=900, height=600,

)

plt.show(fig)

…but this plots 14 values on the x-axis (and I have no idea why?!)

On Wednesday, 27 April 2016 12:21:28 UTC+10, [email protected] wrote:

I think the matplotlib api may be too ingrained in me as I can’t figure out how to use bokeh to create a simple bar graph.

I’m probably just having a brain-freeze but I’ve referred to the examples and tried multiple things with no luck so would greatly appreciate it if someone please show me how to use the bokeh api to replicate the below plot?

On the plus side it will probably be a useful example for others used to the pandas/matplotlib api.

index = pd.Index([1,2,3,4,5], label=‘period’)

columns = pd.Index([‘A’, ‘B’, ‘C’], label=‘categories’)

values = randint(10, 100, 15).reshape(5, 3)

values.sort(axis=0)

df = pd.DataFrame(values, index, columns)

df.plot.bar(stacked=True)

i.e. the index of the DataFrame contains the x-axis labels, the columns are the categories to stack and the values are the values for each label/category

TIA,

Dave

Thanks - that’s very helpful!

For reference my working implementation is @ Notebook :: Anaconda.org

A couple of warts:

  • bokeh throws an unhelpful error message if the column labels aren’t strings

  • there appears no way to set the xlabel/ylabel values after the chart is created - fig.xlabel = xlabel has no effect

  • bokeh insists on title-casing the column labels

-Dave

···

On Thursday, 28 April 2016 03:26:36 UTC+10, Sarah Bird wrote:

Hi,

Charts prefers long data. I learned this from here:

http://nbviewer.jupyter.org/github/bokeh/bokeh/blob/0.11.1/examples/howto/charts/deep_dive.ipynb

So I re-made your dataframe into long data, from there it was pretty

straight forward:

Bar(long_df, label='period', values='value', stack='cat',

legend=True)

http://nbviewer.jupyter.org/github/birdsarah/bokeh-miscellany/blob/master/stack_bar_pivot_table.ipynb

Best,



Bird


  On 4/26/16 11:02 PM, Sarah Bird - > Continuum wrote:
      yes. i think a fix for

this was submitted recently and will be in the next release.

                              will take a look in the

morning.

On 4/26/16 10:52 PM, [email protected] wrote:

      It also appears that Bar modifies the DataFrame

inplace though that doesn’t appear to be the cause of my
problems…

-Dave

          On Wednesday, 27 April 2016 13:42:30 UTC+10, [email protected] > > >               wrote:
              Thanks for the quick reply, but that

doesn’t seem to make a difference.

                For ease of reproducing, my failed attempts are

available at https://anaconda.org/dhirschfeld/bokeh-stacked-bar/notebook

Thanks,

Dave

                  On Wednesday, 27 April 2016 13:15:05 UTC+10, Sarah > > > > Bird wrote:

I’m not sure, as I’m on my phone.

                        But I'd suggest trying reset_index to get

your index as a column and then asking for
that to be your label.

                        The charts api manipulates your dataframe

to get all the bits it needs for your
columns and it maybe that index points at
the wrong thing.

                        Sarah Bird

[email protected]

                        On Apr 26, 2016, at 7:36 PM, [email protected] > > > > >                             wrote:

My closest attempt was:

fig = Bar(

df,
label='index',
                                      values=blend(*['A',

‘B’, ‘C’],
labels_name=‘categories’),

stack=cat(columns=‘categories’ ,
sort=False),

                                      width=900,

height=600,

)

plt.show(fig)

                              ...but this plots 14 values on the

x-axis (and I have no idea why?!)

                              On Wednesday, 27 April 2016 12:21:28 > > > > > > UTC+10, nov...@[gmail.com](http://gmail.com) wrote:
                                  I think the

matplotlib api may be too
ingrained in me as I can’t figure
out how to use bokeh to create a
simple bar graph.

                                    I'm probably just having a

brain-freeze but I’ve referred
to the examples and tried
multiple things with no luck so
would greatly appreciate it if
someone please show me how to
use the bokeh api to replicate
the below plot?

                                    On the plus side it will

probably be a useful example for
others used to the
pandas/matplotlib api.

                                        index =

pd.Index([1,2,3,4,5],
label=‘period’)

                                        columns =

pd.Index([‘A’, ‘B’, ‘C’],
label=‘categories’)

                                        values =

randint(10, 100,
15).reshape(5, 3)

values.sort(axis=0)

                                        df =

pd.DataFrame(values, index,
columns)

df.plot.bar(stacked=True)

                                    i.e. the index of the

DataFrame contains the x-axis
labels, the columns are the
categories to stack and the
values are the values for each
label/category

TIA,

Dave

                          You received this message because you are

subscribed to the Google Groups “Bokeh
Discussion - Public” group.

                          To unsubscribe from this group and stop

receiving emails from it, send an email to
[email protected].

                          To post to this group, send email to [email protected].

                          To view this discussion on the web visit [](https://groups.google.com/a/)[https://groups.google.com/a/](https://groups.google.com/a/)[continuum.io/d/msgid/bokeh/1942a4e9-7f8e-488f-a51e-d2b9f2274070%40continuum.io](http://continuum.io/d/msgid/bokeh/1942a4e9-7f8e-488f-a51e-d2b9f2274070%40continuum.io).

                          For more options, visit [](https://groups.google.com/a/)[https://groups.google.com/a/](https://groups.google.com/a/)[continuum.io/d/optout](http://continuum.io/d/optout).

    You received this message because you are subscribed to the

Google Groups “Bokeh Discussion - Public” group.

    To unsubscribe from this group and stop receiving emails from

it, send an email to [email protected].

    To post to this group, send email to [email protected].

    To view this discussion on the web visit [](https://groups.google.com/a/continuum.io/d/msgid/bokeh/c4725c33-4f3b-410f-bef8-f67d805eee93%40continuum.io)[https://groups.google.com/a/continuum.io/d/msgid/bokeh/c4725c33-4f3b-410f-bef8-f67d805eee93%40continuum.io](https://groups.google.com/a/continuum.io/d/msgid/bokeh/c4725c33-4f3b-410f-bef8-f67d805eee93%40continuum.io).

    For more options, visit [https://groups.google.com/a/continuum.io/d/optout](https://groups.google.com/a/continuum.io/d/optout).


Sarah Bird
Developer, Bokeh

      [ <img alt="Continuum Analytics" src="https://lh6.googleusercontent.com/proxy/VYgVjggTk1hCXSN9wFkffE3I6kxTvJ51tT4KvDXOuKbs1WyFG66k7kt2-vkDimbyxfWtP-d1paJmstMYhPPnDYSUF4rLPoYM2GM2QFM=w5000-h5000" height="30px" width="150px"> ](http://continuum.io)


Sarah Bird
Developer, Bokeh

    [
      <img alt="Continuum Analytics" src="https://lh6.googleusercontent.com/proxy/VYgVjggTk1hCXSN9wFkffE3I6kxTvJ51tT4KvDXOuKbs1WyFG66k7kt2-vkDimbyxfWtP-d1paJmstMYhPPnDYSUF4rLPoYM2GM2QFM=w5000-h5000" height="30px" width="150px">
    ](http://continuum.io)

…and bokeh also plots incorrectly if one of your column labels happens to be called ‘index’ (which isn’t that uncommon)

···

On Wednesday, 4 May 2016 14:59:20 UTC+10, [email protected] wrote:

Thanks - that’s very helpful!

For reference my working implementation is @ https://anaconda.org/dhirschfeld/bokeh-stacked-bar/notebook

A couple of warts:

  • bokeh throws an unhelpful error message if the column labels aren’t strings
  • there appears no way to set the xlabel/ylabel values after the chart is created - fig.xlabel = xlabel has no effect
  • bokeh insists on title-casing the column labels

-Dave

On Thursday, 28 April 2016 03:26:36 UTC+10, Sarah Bird wrote:

Hi,

Charts prefers long data. I learned this from here:

http://nbviewer.jupyter.org/github/bokeh/bokeh/blob/0.11.1/examples/howto/charts/deep_dive.ipynb

So I re-made your dataframe into long data, from there it was pretty

straight forward:

Bar(long_df, label='period', values='value', stack='cat',

legend=True)

http://nbviewer.jupyter.org/github/birdsarah/bokeh-miscellany/blob/master/stack_bar_pivot_table.ipynb

Best,



Bird


  On 4/26/16 11:02 PM, Sarah Bird - > > Continuum wrote:
      yes. i think a fix for

this was submitted recently and will be in the next release.

                              will take a look in the

morning.

On 4/26/16 10:52 PM, [email protected] wrote:

      It also appears that Bar modifies the DataFrame

inplace though that doesn’t appear to be the cause of my
problems…

-Dave

          On Wednesday, 27 April 2016 13:42:30 UTC+10, [email protected] > > > >               wrote:
              Thanks for the quick reply, but that

doesn’t seem to make a difference.

                For ease of reproducing, my failed attempts are

available at https://anaconda.org/dhirschfeld/bokeh-stacked-bar/notebook

Thanks,

Dave

                  On Wednesday, 27 April 2016 13:15:05 UTC+10, Sarah > > > > > Bird wrote:

I’m not sure, as I’m on my phone.

                        But I'd suggest trying reset_index to get

your index as a column and then asking for
that to be your label.

                        The charts api manipulates your dataframe

to get all the bits it needs for your
columns and it maybe that index points at
the wrong thing.

                        Sarah Bird

[email protected]

                        On Apr 26, 2016, at 7:36 PM, [email protected] > > > > > >                             wrote:

My closest attempt was:

fig = Bar(

df,
label='index',
                                      values=blend(*['A',

‘B’, ‘C’],
labels_name=‘categories’),

stack=cat(columns=‘categories’ ,
sort=False),

                                      width=900,

height=600,

)

plt.show(fig)

                              ...but this plots 14 values on the

x-axis (and I have no idea why?!)

                              On Wednesday, 27 April 2016 12:21:28 > > > > > > > UTC+10, nov...@[gmail.com](http://gmail.com) wrote:
                                  I think the

matplotlib api may be too
ingrained in me as I can’t figure
out how to use bokeh to create a
simple bar graph.

                                    I'm probably just having a

brain-freeze but I’ve referred
to the examples and tried
multiple things with no luck so
would greatly appreciate it if
someone please show me how to
use the bokeh api to replicate
the below plot?

                                    On the plus side it will

probably be a useful example for
others used to the
pandas/matplotlib api.

                                        index =

pd.Index([1,2,3,4,5],
label=‘period’)

                                        columns =

pd.Index([‘A’, ‘B’, ‘C’],
label=‘categories’)

                                        values =

randint(10, 100,
15).reshape(5, 3)

values.sort(axis=0)

                                        df =

pd.DataFrame(values, index,
columns)

df.plot.bar(stacked=True)

                                    i.e. the index of the

DataFrame contains the x-axis
labels, the columns are the
categories to stack and the
values are the values for each
label/category

TIA,

Dave

                          You received this message because you are

subscribed to the Google Groups “Bokeh
Discussion - Public” group.

                          To unsubscribe from this group and stop

receiving emails from it, send an email to
[email protected].

                          To post to this group, send email to [email protected].

                          To view this discussion on the web visit [](https://groups.google.com/a/)[https://groups.google.com/a/](https://groups.google.com/a/)[continuum.io/d/msgid/bokeh/1942a4e9-7f8e-488f-a51e-d2b9f2274070%40continuum.io](http://continuum.io/d/msgid/bokeh/1942a4e9-7f8e-488f-a51e-d2b9f2274070%40continuum.io).

                          For more options, visit [](https://groups.google.com/a/)[https://groups.google.com/a/](https://groups.google.com/a/)[continuum.io/d/optout](http://continuum.io/d/optout).

    You received this message because you are subscribed to the

Google Groups “Bokeh Discussion - Public” group.

    To unsubscribe from this group and stop receiving emails from

it, send an email to [email protected].

    To post to this group, send email to [email protected].

    To view this discussion on the web visit [](https://groups.google.com/a/continuum.io/d/msgid/bokeh/c4725c33-4f3b-410f-bef8-f67d805eee93%40continuum.io)[https://groups.google.com/a/continuum.io/d/msgid/bokeh/c4725c33-4f3b-410f-bef8-f67d805eee93%40continuum.io](https://groups.google.com/a/continuum.io/d/msgid/bokeh/c4725c33-4f3b-410f-bef8-f67d805eee93%40continuum.io).

    For more options, visit [https://groups.google.com/a/continuum.io/d/optout](https://groups.google.com/a/continuum.io/d/optout).


Sarah Bird
Developer, Bokeh

      [ <img alt="Continuum Analytics" src="https://lh6.googleusercontent.com/proxy/VYgVjggTk1hCXSN9wFkffE3I6kxTvJ51tT4KvDXOuKbs1WyFG66k7kt2-vkDimbyxfWtP-d1paJmstMYhPPnDYSUF4rLPoYM2GM2QFM=w5000-h5000" height="30px" width="150px"> ](http://continuum.io)


Sarah Bird
Developer, Bokeh

    [
      <img alt="Continuum Analytics" src="https://lh6.googleusercontent.com/proxy/VYgVjggTk1hCXSN9wFkffE3I6kxTvJ51tT4KvDXOuKbs1WyFG66k7kt2-vkDimbyxfWtP-d1paJmstMYhPPnDYSUF4rLPoYM2GM2QFM=w5000-h5000" height="30px" width="150px">
    ](http://continuum.io)

We should make a point to have it not do this. Can you see if any of the recent issues here:

  https://github.com/bokeh/bokeh/search?q=index&state=open&type=Issues&utf8=✓

Cover this? If not, a new issue to remind us to make this better would be appreciated.

Thanks,

Bryan

···

On May 4, 2016, at 12:18 AM, [email protected] wrote:

...and bokeh also plots incorrectly if one of your column labels happens to be called 'index' (which isn't that uncommon)

On Wednesday, 4 May 2016 14:59:20 UTC+10, nov...@gmail.com wrote:
Thanks - that's very helpful!

For reference my working implementation is @ Notebook :: Anaconda.org

A couple of warts:
* bokeh throws an unhelpful error message if the column labels aren't strings
* there appears no way to set the xlabel/ylabel values after the chart is created - fig.xlabel = xlabel has no effect
* bokeh insists on title-casing the column labels

-Dave

On Thursday, 28 April 2016 03:26:36 UTC+10, Sarah Bird wrote:
Hi,

Charts prefers long data. I learned this from here: Jupyter Notebook Viewer

So I re-made your dataframe into long data, from there it was pretty straight forward:

Bar(long_df, label='period', values='value', stack='cat', legend=True)

http://nbviewer.jupyter.org/github/birdsarah/bokeh-miscellany/blob/master/stack_bar_pivot_table.ipynb

Best,

Bird

On 4/26/16 11:02 PM, Sarah Bird - Continuum wrote:

yes. i think a fix for this was submitted recently and will be in the next release.

will take a look in the morning.

On 4/26/16 10:52 PM, nov...@gmail.com wrote:

It also appears that Bar modifies the DataFrame inplace though that doesn't appear to be the cause of my problems...

-Dave

On Wednesday, 27 April 2016 13:42:30 UTC+10, nov...@gmail.com wrote:
Thanks for the quick reply, but that doesn't seem to make a difference.

For ease of reproducing, my failed attempts are available at Notebook :: Anaconda.org

Thanks,
Dave

On Wednesday, 27 April 2016 13:15:05 UTC+10, Sarah Bird wrote:
I'm not sure, as I'm on my phone.

But I'd suggest trying reset_index to get your index as a column and then asking for that to be your label.

The charts api manipulates your dataframe to get all the bits it needs for your columns and it maybe that index points at the wrong thing.

Sarah Bird
sb...@continuum.io

On Apr 26, 2016, at 7:36 PM, nov...@gmail.com wrote:

My closest attempt was:

fig = Bar(
    df,
    label='index',
    values=blend(*['A', 'B', 'C'], labels_name='categories'),
    stack=cat(columns='categories', sort=False),
    width=900, height=600,
)
plt.show(fig)

...but this plots 14 values on the x-axis (and I have no idea why?!)

On Wednesday, 27 April 2016 12:21:28 UTC+10, nov...@gmail.com wrote:
I think the matplotlib api may be too ingrained in me as I can't figure out how to use bokeh to create a simple bar graph.

I'm probably just having a brain-freeze but I've referred to the examples and tried multiple things with no luck so would greatly appreciate it if someone please show me how to use the bokeh api to replicate the below plot?

On the plus side it will probably be a useful example for others used to the pandas/matplotlib api.

index = pd.Index([1,2,3,4,5], label='period')
columns = pd.Index(['A', 'B', 'C'], label='categories')
values = randint(10, 100, 15).reshape(5, 3)
values.sort(axis=0)
df = pd.DataFrame(values, index, columns)
df.plot.bar(stacked=True)

i.e. the index of the DataFrame contains the x-axis labels, the columns are the categories to stack and the values are the values for each label/category

TIA,
Dave

--
You received this message because you are subscribed to the Google Groups "Bokeh Discussion - Public" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bokeh+un...@continuum.io.
To post to this group, send email to bo...@continuum.io.
To view this discussion on the web visit https://groups.google.com/a/continuum.io/d/msgid/bokeh/1942a4e9-7f8e-488f-a51e-d2b9f2274070%40continuum.io\.
For more options, visit https://groups.google.com/a/continuum.io/d/optout\.

--
You received this message because you are subscribed to the Google Groups "Bokeh Discussion - Public" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bokeh+un...@continuum.io.
To post to this group, send email to bo...@continuum.io.
To view this discussion on the web visit https://groups.google.com/a/continuum.io/d/msgid/bokeh/c4725c33-4f3b-410f-bef8-f67d805eee93%40continuum.io\.
For more options, visit https://groups.google.com/a/continuum.io/d/optout\.

--
Sarah Bird
Developer, Bokeh

--
Sarah Bird
Developer, Bokeh

--
You received this message because you are subscribed to the Google Groups "Bokeh Discussion - Public" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit https://groups.google.com/a/continuum.io/d/msgid/bokeh/58dd6526-8de4-4ca0-a313-259eab2fb83d%40continuum.io\.
For more options, visit https://groups.google.com/a/continuum.io/d/optout\.

Sorry for dropping off the radar. I’m in the middle of a pretty intensive home renovation, but hope to apply some time here in a month or two.

I’d recommend addressing the problem up front with the pivoted data (see: Legacy Communities - IBM TechXchange Community), but it would be good to support the pandas-like plotting interface. I really recommend reading on why this data format is recommended. After working when many types of data stores and graphics libraries, I’ve found this format eventually will start to click, especially with interactive web applications, and being able to use the same data structure as input to more than one type of chart.

However, this does conflict with just simple ease of use and consistency with the pandas plotting. For that, my ideal situation would be if there was a way to register a new plotting capability into pandas. But also the other way that could be done is via subclassing the dataframe with a special bokeh dataframe. I demonstrated how that could work here: Notebook :: Anaconda.org. You would override each plotting method, where you’d adapt the pandas interface to using the bokeh-equivalent chart. If there was any interest in this, I could try putting some more time into it.

-Nick

···

On Tuesday, May 3, 2016 at 11:59:20 PM UTC-5, [email protected] wrote:

Thanks - that’s very helpful!

For reference my working implementation is @ https://anaconda.org/dhirschfeld/bokeh-stacked-bar/notebook

A couple of warts:

  • bokeh throws an unhelpful error message if the column labels aren’t strings
  • there appears no way to set the xlabel/ylabel values after the chart is created - fig.xlabel = xlabel has no effect
  • bokeh insists on title-casing the column labels

-Dave

On Thursday, 28 April 2016 03:26:36 UTC+10, Sarah Bird wrote:

Hi,

Charts prefers long data. I learned this from here:

http://nbviewer.jupyter.org/github/bokeh/bokeh/blob/0.11.1/examples/howto/charts/deep_dive.ipynb

So I re-made your dataframe into long data, from there it was pretty

straight forward:

Bar(long_df, label='period', values='value', stack='cat',

legend=True)

http://nbviewer.jupyter.org/github/birdsarah/bokeh-miscellany/blob/master/stack_bar_pivot_table.ipynb

Best,



Bird


  On 4/26/16 11:02 PM, Sarah Bird - > > Continuum wrote:
      yes. i think a fix for

this was submitted recently and will be in the next release.

                              will take a look in the

morning.

On 4/26/16 10:52 PM, [email protected] wrote:

      It also appears that Bar modifies the DataFrame

inplace though that doesn’t appear to be the cause of my
problems…

-Dave

          On Wednesday, 27 April 2016 13:42:30 UTC+10, [email protected] > > > >               wrote:
              Thanks for the quick reply, but that

doesn’t seem to make a difference.

                For ease of reproducing, my failed attempts are

available at https://anaconda.org/dhirschfeld/bokeh-stacked-bar/notebook

Thanks,

Dave

                  On Wednesday, 27 April 2016 13:15:05 UTC+10, Sarah > > > > > Bird wrote:

I’m not sure, as I’m on my phone.

                        But I'd suggest trying reset_index to get

your index as a column and then asking for
that to be your label.

                        The charts api manipulates your dataframe

to get all the bits it needs for your
columns and it maybe that index points at
the wrong thing.

                        Sarah Bird

[email protected]

                        On Apr 26, 2016, at 7:36 PM, [email protected] > > > > > >                             wrote:

My closest attempt was:

fig = Bar(

df,
label='index',
                                      values=blend(*['A',

‘B’, ‘C’],
labels_name=‘categories’),

stack=cat(columns=‘categories’ ,
sort=False),

                                      width=900,

height=600,

)

plt.show(fig)

                              ...but this plots 14 values on the

x-axis (and I have no idea why?!)

                              On Wednesday, 27 April 2016 12:21:28 > > > > > > > UTC+10, nov...@[gmail.com](http://gmail.com) wrote:
                                  I think the

matplotlib api may be too
ingrained in me as I can’t figure
out how to use bokeh to create a
simple bar graph.

                                    I'm probably just having a

brain-freeze but I’ve referred
to the examples and tried
multiple things with no luck so
would greatly appreciate it if
someone please show me how to
use the bokeh api to replicate
the below plot?

                                    On the plus side it will

probably be a useful example for
others used to the
pandas/matplotlib api.

                                        index =

pd.Index([1,2,3,4,5],
label=‘period’)

                                        columns =

pd.Index([‘A’, ‘B’, ‘C’],
label=‘categories’)

                                        values =

randint(10, 100,
15).reshape(5, 3)

values.sort(axis=0)

                                        df =

pd.DataFrame(values, index,
columns)

df.plot.bar(stacked=True)

                                    i.e. the index of the

DataFrame contains the x-axis
labels, the columns are the
categories to stack and the
values are the values for each
label/category

TIA,

Dave

                          You received this message because you are

subscribed to the Google Groups “Bokeh
Discussion - Public” group.

                          To unsubscribe from this group and stop

receiving emails from it, send an email to
[email protected].

                          To post to this group, send email to [email protected].

                          To view this discussion on the web visit [](https://groups.google.com/a/)[https://groups.google.com/a/](https://groups.google.com/a/)[continuum.io/d/msgid/bokeh/1942a4e9-7f8e-488f-a51e-d2b9f2274070%40continuum.io](http://continuum.io/d/msgid/bokeh/1942a4e9-7f8e-488f-a51e-d2b9f2274070%40continuum.io).

                          For more options, visit [](https://groups.google.com/a/)[https://groups.google.com/a/](https://groups.google.com/a/)[continuum.io/d/optout](http://continuum.io/d/optout).

    You received this message because you are subscribed to the

Google Groups “Bokeh Discussion - Public” group.

    To unsubscribe from this group and stop receiving emails from

it, send an email to [email protected].

    To post to this group, send email to [email protected].

    To view this discussion on the web visit [](https://groups.google.com/a/continuum.io/d/msgid/bokeh/c4725c33-4f3b-410f-bef8-f67d805eee93%40continuum.io)[https://groups.google.com/a/continuum.io/d/msgid/bokeh/c4725c33-4f3b-410f-bef8-f67d805eee93%40continuum.io](https://groups.google.com/a/continuum.io/d/msgid/bokeh/c4725c33-4f3b-410f-bef8-f67d805eee93%40continuum.io).

    For more options, visit [https://groups.google.com/a/continuum.io/d/optout](https://groups.google.com/a/continuum.io/d/optout).


Sarah Bird
Developer, Bokeh

      [ <img alt="Continuum Analytics" src="https://lh6.googleusercontent.com/proxy/VYgVjggTk1hCXSN9wFkffE3I6kxTvJ51tT4KvDXOuKbs1WyFG66k7kt2-vkDimbyxfWtP-d1paJmstMYhPPnDYSUF4rLPoYM2GM2QFM=w5000-h5000" height="30px" width="150px"> ](http://continuum.io)


Sarah Bird
Developer, Bokeh

    [
      <img alt="Continuum Analytics" src="https://lh6.googleusercontent.com/proxy/VYgVjggTk1hCXSN9wFkffE3I6kxTvJ51tT4KvDXOuKbs1WyFG66k7kt2-vkDimbyxfWtP-d1paJmstMYhPPnDYSUF4rLPoYM2GM2QFM=w5000-h5000" height="30px" width="150px">
    ](http://continuum.io)

Hi Dave,

···

On Tue, May 3, 2016 at 11:59 PM, [email protected] wrote:

Thanks - that’s very helpful!

For reference my working implementation is @ https://anaconda.org/dhirschfeld/bokeh-stacked-bar/notebook

Great!

A couple of warts:

  • bokeh throws an unhelpful error message if the column labels aren’t strings

Could you file an issue for this with some info to reproduce the error so we can track this? I recall something about this but couldn’t find any open issue about this in a glance…

  • there appears no way to set the xlabel/ylabel values after the chart is created - fig.xlabel = xlabel has no effect

There is current work about this (and to alignt plotting.Figure and Chart API as much as possible). At the moment you need to call:

fig._xaxis.axis_label = ‘your label’

  • bokeh insists on title-casing the column labels

Sorry, I’m not sure I understand. You mean when it auto creates the axis labels or when you explicitly pass xlabel/ylabel? Could you provide an example?

Thanks

Fabio

-Dave

On Thursday, 28 April 2016 03:26:36 UTC+10, Sarah Bird wrote:

Hi,

Charts prefers long data. I learned this from here:

http://nbviewer.jupyter.org/github/bokeh/bokeh/blob/0.11.1/examples/howto/charts/deep_dive.ipynb

So I re-made your dataframe into long data, from there it was pretty

straight forward:

Bar(long_df, label='period', values='value', stack='cat',

legend=True)

http://nbviewer.jupyter.org/github/birdsarah/bokeh-miscellany/blob/master/stack_bar_pivot_table.ipynb

Best,



Bird


  On 4/26/16 11:02 PM, Sarah Bird -

Continuum wrote:

            yes. i think a fix for

this was submitted recently and will be in the next release.

                              will take a look in the

morning.

On 4/26/16 10:52 PM, [email protected] wrote:

      It also appears that Bar modifies the DataFrame

inplace though that doesn’t appear to be the cause of my
problems…

-Dave

          On Wednesday, 27 April 2016 13:42:30 UTC+10, [email protected]
          wrote:
              Thanks for the quick reply, but that

doesn’t seem to make a difference.

                For ease of reproducing, my failed attempts are

available at https://anaconda.org/dhirschfeld/bokeh-stacked-bar/notebook

Thanks,

Dave

                  On Wednesday, 27 April 2016 13:15:05 UTC+10, Sarah

Bird wrote:

I’m not sure, as I’m on my phone.

                        But I'd suggest trying reset_index to get

your index as a column and then asking for
that to be your label.

                        The charts api manipulates your dataframe

to get all the bits it needs for your
columns and it maybe that index points at
the wrong thing.

                        Sarah Bird

[email protected]

                        On Apr 26, 2016, at 7:36 PM, [email protected]
                        wrote:

My closest attempt was:

fig = Bar(

df,
label='index',
                                      values=blend(*['A',

‘B’, ‘C’],
labels_name=‘categories’),

stack=cat(columns=‘categories’,
sort=False),

                                      width=900,

height=600,

)

plt.show(fig)

                              ...but this plots 14 values on the

x-axis (and I have no idea why?!)

                              On Wednesday, 27 April 2016 12:21:28

UTC+10, nov…@gmail.com wrote:

                                  I think the

matplotlib api may be too
ingrained in me as I can’t figure
out how to use bokeh to create a
simple bar graph.

                                    I'm probably just having a

brain-freeze but I’ve referred
to the examples and tried
multiple things with no luck so
would greatly appreciate it if
someone please show me how to
use the bokeh api to replicate
the below plot?

                                    On the plus side it will

probably be a useful example for
others used to the
pandas/matplotlib api.

                                        index =

pd.Index([1,2,3,4,5],
label=‘period’)

                                        columns =

pd.Index([‘A’, ‘B’, ‘C’],
label=‘categories’)

                                        values =

randint(10, 100,
15).reshape(5, 3)

values.sort(axis=0)

                                        df =

pd.DataFrame(values, index,
columns)

df.plot.bar(stacked=True)

                                    i.e. the index of the

DataFrame contains the x-axis
labels, the columns are the
categories to stack and the
values are the values for each
label/category

TIA,

Dave

                          You received this message because you are

subscribed to the Google Groups “Bokeh
Discussion - Public” group.

                          To unsubscribe from this group and stop

receiving emails from it, send an email to
[email protected].

                          To post to this group, send email to [email protected].

                          To view this discussion on the web visit [](https://groups.google.com/a/)[https://groups.google.com/a/](https://groups.google.com/a/)[continuum.io/d/msgid/bokeh/1942a4e9-7f8e-488f-a51e-d2b9f2274070%40continuum.io](http://continuum.io/d/msgid/bokeh/1942a4e9-7f8e-488f-a51e-d2b9f2274070%40continuum.io).

                          For more options, visit [](https://groups.google.com/a/)[https://groups.google.com/a/](https://groups.google.com/a/)[continuum.io/d/optout](http://continuum.io/d/optout).

    You received this message because you are subscribed to the

Google Groups “Bokeh Discussion - Public” group.

    To unsubscribe from this group and stop receiving emails from

it, send an email to [email protected].

    To post to this group, send email to [email protected].
    To view this discussion on the web visit [](https://groups.google.com/a/continuum.io/d/msgid/bokeh/c4725c33-4f3b-410f-bef8-f67d805eee93%40continuum.io)[https://groups.google.com/a/continuum.io/d/msgid/bokeh/c4725c33-4f3b-410f-bef8-f67d805eee93%40continuum.io](https://groups.google.com/a/continuum.io/d/msgid/bokeh/c4725c33-4f3b-410f-bef8-f67d805eee93%40continuum.io).

    For more options, visit [https://groups.google.com/a/continuum.io/d/optout](https://groups.google.com/a/continuum.io/d/optout).


Sarah Bird
Developer, Bokeh

      [ ![Continuum Analytics](http://docs.continuum.io/_static/img/ContinuumWordmark.png) ](http://continuum.io)


Sarah Bird
Developer, Bokeh

    [
      ![Continuum Analytics](http://docs.continuum.io/_static/img/ContinuumWordmark.png)
    ](http://continuum.io)

You received this message because you are subscribed to the Google Groups “Bokeh Discussion - Public” group.

To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].

To post to this group, send email to [email protected].

To view this discussion on the web visit https://groups.google.com/a/continuum.io/d/msgid/bokeh/71ee5270-6a1d-4ed9-92ad-19490028f6e6%40continuum.io.

For more options, visit https://groups.google.com/a/continuum.io/d/optout.

Fabio Pliger

Senior Software Engineer, Bokeh