我如何在散景中组合多个条形图?

How do i combine multiple bar charts in bokeh?

我想在同一张图上绘制两个条形图。

一个只有正值,一个只有负值。

我想要绿色的正条(x 轴上方)和红色的负条(x 轴下方)

问题:

1.是否可以使用 bokeh.charts 接口中现有的高级 Bar 方法来执行此操作?

2。如果没有,如何使用较低级别的 bokeh.plotting 界面创建条形图? (而不是更高级别的bokeh.charts接口)

编辑:下面的答案已经过时几年了。各种条形图(堆叠、分组、颜色映射)现在变得更加简单和容易。有关许多示例,请参阅用户指南的这一部分:

https://docs.bokeh.org/en/latest/docs/user_guide/categorical.html


1. 我尝试使用高级 Bar 方法绘制多个条形图,但是我无法实现我想要的,所以我使用了绘图界面。

2. 这是您要找的吗?

    from bokeh.plotting import figure, output_file, show

    plot = figure(width=600, height=600, x_range=(0,50), y_range=(-10,10))

    plot.quad(top=[10],bottom=[0],left=[1],right=[2], color='green', line_color='black', legend='positive')
    plot.quad(top=[12],bottom=[0],left=[2],right=[3], color='green', line_color='black', legend='positive')
    plot.quad(top=[1],bottom=[0],left=[3],right=[4], color='green', line_color='black', legend='positive')
    plot.quad(top=[2],bottom=[0],left=[4],right=[5], color='green', line_color='black', legend='positive')
    plot.quad(top=[3],bottom=[0],left=[5],right=[6], color='green', line_color='black', legend='positive')
    plot.quad(top=[4],bottom=[0],left=[6],right=[7], color='green', line_color='black', legend='positive')

    plot.quad(top=[-5],bottom=[0],left=[1],right=[2], color='red', line_color='black', legend='negative')
    plot.quad(top=[-6],bottom=[0],left=[2],right=[3], color='red', line_color='black', legend='negative')
    plot.quad(top=[-2],bottom=[0],left=[3],right=[4], color='red', line_color='black', legend='negative')
    plot.quad(top=[-8],bottom=[0],left=[4],right=[5], color='red', line_color='black', legend='negative')
    plot.quad(top=[-9],bottom=[0],left=[5],right=[6], color='red', line_color='black', legend='negative')
    plot.quad(top=[-10],bottom=[0],left=[6],right=[7], color='red', line_color='black', legend='negative')

    output_file('test.html')
    show(plot)

您可以使用两个 vbar_stack 调用:

volume_figure.vbar_stack(["buys"], x='timestamp', width=1.0, color=[colors.turquoise], source=source)
volume_figure.vbar_stack(["sells"], x='timestamp', width=1.0, color=[colors.tomato], source=source)

一般来说,条形图在文档部分有详细描述Handling Categorical Data