☰Read-only archive⌕
Looking for help with Bokeh?

This is a read-only archive. Ask questions and join the conversation on GitHub.

Visit Community Support on GitHub →
Archived discussions · Captured October 28, 2026

Specify Histogram Bins

Community Support
Sean_Law
Sean_Law

I have a list of Pandas dataframes stored in dfs and I am plotting a grid (three columns) of histograms:

hists = [Histogram(dfs[colname],

title=colname,

bins=20,

) for colname in dfs.columns]

for h in hists:

h.x_range = Range1d(-20, 20)

ncol = 3

hists = [hists[i:i+ncol] for i in range(0,len(hists),ncol)]

p = gridplot(hists)

However, I’ve noticed that while the number of bins (20) are the same in all of the plots, the width and location of each bin is inconsistent from plot to plot. I believe this is because each plot has a different x_range and the bins are generated using some optimized method. Instead, I’d like to be able to specify the width and location of each bin, maybe in the form of a list of tuples or something:

bins = [(-20, -15), (-15, -10), (-10, -5), (-5, 0), (0, 5), (5, 10), (10, 15), (15, 20)]

Also, notice that I’ve set my x_range to (-20, 20) so I know my min/max are from all of the plots.

⌁   Link to post
Fabio_Pliger
Fabio_Pliger

Hi,

You can’t specify the width and location of the bins with Histogram chart. I suggest you to add a github issue with this feature request so we can have a discussion and better understanding of what is needed and if we can plan on doing it. As a side note, we have many improvements in mind for the Charts interface and one of these is to make it possible (and hopefully easy) to specify custom binning function to Histogram. This MAY related to your needs.

Thanks

Fabio

···

On Tue, Dec 22, 2015 at 9:16 AM, seanmylaw@gmail.com wrote:

I have a list of Pandas dataframes stored in dfs and I am plotting a grid (three columns) of histograms:

hists = [Histogram(dfs[colname],

title=colname,

bins=20,

) for colname in dfs.columns]

for h in hists:

h.x_range = Range1d(-20, 20)

ncol = 3

hists = [hists[i:i+ncol] for i in range(0,len(hists),ncol)]

p = gridplot(hists)

However, I’ve noticed that while the number of bins (20) are the same in all of the plots, the width and location of each bin is inconsistent from plot to plot. I believe this is because each plot has a different x_range and the bins are generated using some optimized method. Instead, I’d like to be able to specify the width and location of each bin, maybe in the form of a list of tuples or something:

bins = [(-20, -15), (-15, -10), (-10, -5), (-5, 0), (0, 5), (5, 10), (10, 15), (15, 20)]

Also, notice that I’ve set my x_range to (-20, 20) so I know my min/max are from all of the plots.

–

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+unsubscribe@continuum.io.

To post to this group, send email to bokeh@continuum.io.

To view this discussion on the web visit https://groups.google.com/a/continuum.io/d/msgid/bokeh/72b5fc11-d413-419f-9a7e-dc0554e643f1%40continuum.io.

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

–

Fabio Pliger

Senior Software Engineer, Bokeh

⌁   Link to post
Sean_Law
Sean_Law

Is there a way to accomplish this with bar charts instead?

···

On Tuesday, December 22, 2015 at 12:22:00 PM UTC-5, Fabio Pliger wrote:

Hi,

You can’t specify the width and location of the bins with Histogram chart. I suggest you to add a github issue with this feature request so we can have a discussion and better understanding of what is needed and if we can plan on doing it. As a side note, we have many improvements in mind for the Charts interface and one of these is to make it possible (and hopefully easy) to specify custom binning function to Histogram. This MAY related to your needs.

Thanks

Fabio

On Tue, Dec 22, 2015 at 9:16 AM, sean...@gmail.com wrote:

I have a list of Pandas dataframes stored in dfs and I am plotting a grid (three columns) of histograms:

hists = [Histogram(dfs[colname],

title=colname,

bins=20,

) for colname in dfs.columns]

for h in hists:

h.x_range = Range1d(-20, 20)

ncol = 3

hists = [hists[i:i+ncol] for i in range(0,len(hists),ncol)]

p = gridplot(hists)

However, I’ve noticed that while the number of bins (20) are the same in all of the plots, the width and location of each bin is inconsistent from plot to plot. I believe this is because each plot has a different x_range and the bins are generated using some optimized method. Instead, I’d like to be able to specify the width and location of each bin, maybe in the form of a list of tuples or something:

bins = [(-20, -15), (-15, -10), (-10, -5), (-5, 0), (0, 5), (5, 10), (10, 15), (15, 20)]

Also, notice that I’ve set my x_range to (-20, 20) so I know my min/max are from all of the plots.

–

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/72b5fc11-d413-419f-9a7e-dc0554e643f1%40continuum.io.

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

–
Fabio Pliger

Senior Software Engineer, Bokeh

⌁   Link to post
Nick_Roth
Nick_Roth

It may be possible, but probably would require some effort.

You would need to pre calculate the histogram values as one column, then the other column would have the categorical locations (labels) for where the bar should go. I’m not sure how it would handle the numerical data that represents the bar centers.

···

On Tuesday, December 22, 2015 at 11:33:17 AM UTC-6, sean...@gmail.com wrote:

Is there a way to accomplish this with bar charts instead?

On Tuesday, December 22, 2015 at 12:22:00 PM UTC-5, Fabio Pliger wrote:

Hi,

You can’t specify the width and location of the bins with Histogram chart. I suggest you to add a github issue with this feature request so we can have a discussion and better understanding of what is needed and if we can plan on doing it. As a side note, we have many improvements in mind for the Charts interface and one of these is to make it possible (and hopefully easy) to specify custom binning function to Histogram. This MAY related to your needs.

Thanks

Fabio

On Tue, Dec 22, 2015 at 9:16 AM, sean...@gmail.com wrote:

I have a list of Pandas dataframes stored in dfs and I am plotting a grid (three columns) of histograms:

hists = [Histogram(dfs[colname],

title=colname,

bins=20,

) for colname in dfs.columns]

for h in hists:

h.x_range = Range1d(-20, 20)

ncol = 3

hists = [hists[i:i+ncol] for i in range(0,len(hists),ncol)]

p = gridplot(hists)

However, I’ve noticed that while the number of bins (20) are the same in all of the plots, the width and location of each bin is inconsistent from plot to plot. I believe this is because each plot has a different x_range and the bins are generated using some optimized method. Instead, I’d like to be able to specify the width and location of each bin, maybe in the form of a list of tuples or something:

bins = [(-20, -15), (-15, -10), (-10, -5), (-5, 0), (0, 5), (5, 10), (10, 15), (15, 20)]

Also, notice that I’ve set my x_range to (-20, 20) so I know my min/max are from all of the plots.

–

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/72b5fc11-d413-419f-9a7e-dc0554e643f1%40continuum.io.

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

–
Fabio Pliger

Senior Software Engineer, Bokeh

⌁   Link to post
Sean_Law
Sean_Law

So, I was able to use bar charts by first rounding my “label” column to the nearest integer and then doing:

p = Bar(dfs, label=‘rounded’, values=‘A’, agg=‘count’, legend=‘top_right’)

show(p)

However, the labeled column ‘rounded’ has values between (-11, 11) and I can’t find a way to set the axis to be between (-20, 20). Any suggestion?

···

On Tuesday, December 22, 2015 at 1:15:34 PM UTC-5, Nick Roth wrote:

It may be possible, but probably would require some effort.

You would need to pre calculate the histogram values as one column, then the other column would have the categorical locations (labels) for where the bar should go. I’m not sure how it would handle the numerical data that represents the bar centers.

On Tuesday, December 22, 2015 at 11:33:17 AM UTC-6, sean...@gmail.com wrote:

Is there a way to accomplish this with bar charts instead?

On Tuesday, December 22, 2015 at 12:22:00 PM UTC-5, Fabio Pliger wrote:

Hi,

You can’t specify the width and location of the bins with Histogram chart. I suggest you to add a github issue with this feature request so we can have a discussion and better understanding of what is needed and if we can plan on doing it. As a side note, we have many improvements in mind for the Charts interface and one of these is to make it possible (and hopefully easy) to specify custom binning function to Histogram. This MAY related to your needs.

Thanks

Fabio

On Tue, Dec 22, 2015 at 9:16 AM, sean...@gmail.com wrote:

I have a list of Pandas dataframes stored in dfs and I am plotting a grid (three columns) of histograms:

hists = [Histogram(dfs[colname],

title=colname,

bins=20,

) for colname in dfs.columns]

for h in hists:

h.x_range = Range1d(-20, 20)

ncol = 3

hists = [hists[i:i+ncol] for i in range(0,len(hists),ncol)]

p = gridplot(hists)

However, I’ve noticed that while the number of bins (20) are the same in all of the plots, the width and location of each bin is inconsistent from plot to plot. I believe this is because each plot has a different x_range and the bins are generated using some optimized method. Instead, I’d like to be able to specify the width and location of each bin, maybe in the form of a list of tuples or something:

bins = [(-20, -15), (-15, -10), (-10, -5), (-5, 0), (0, 5), (5, 10), (10, 15), (15, 20)]

Also, notice that I’ve set my x_range to (-20, 20) so I know my min/max are from all of the plots.

–

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/72b5fc11-d413-419f-9a7e-dc0554e643f1%40continuum.io.

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

–
Fabio Pliger

Senior Software Engineer, Bokeh

⌁   Link to post

End of archived discussion · Replies are disabled