Python 如何组织数据以指定与0无关的hbar_堆栈的范围?[博克]

Python 如何组织数据以指定与0无关的hbar_堆栈的范围?[博克],python,charts,visualization,bokeh,Python,Charts,Visualization,Bokeh,下面是一个代码示例: 我注意到,在这个hbar_堆栈示例中,条形图是基于相对于0的数据呈现的 如何为不包含0的条指定范围?例如,如果我希望一个条介于5和10之间?不幸的是,hbar_堆栈和vbar_堆栈总是从零开始对相关值求和,没有任何偏移。添加偏移似乎是一个潜在的合理和直接考虑的事情,所以我建议请求这个特性。 同时,有几种不同的方法可以起作用 使用一个对hbar_堆栈的调用,但将偏移量预烘焙到数据中。如果您的CDS列是numpy阵列或熊猫系列,则只需将偏移量添加到正在堆叠的每个列。比如: f

下面是一个代码示例:

我注意到,在这个hbar_堆栈示例中,条形图是基于相对于0的数据呈现的

如何为不包含0的条指定范围?例如,如果我希望一个条介于5和10之间?

不幸的是,hbar_堆栈和vbar_堆栈总是从零开始对相关值求和,没有任何偏移。添加偏移似乎是一个潜在的合理和直接考虑的事情,所以我建议请求这个特性。 同时,有几种不同的方法可以起作用

使用一个对hbar_堆栈的调用,但将偏移量预烘焙到数据中。如果您的CDS列是numpy阵列或熊猫系列,则只需将偏移量添加到正在堆叠的每个列。比如:

for x in years:
    imports[year] += offset
    exports[year] += offset
这与上面的代码不一样,因为列是常规的Python列表,但是如果您使用array/series,那么添加偏移量将与上面的操作一样

使用对hbar的多个调用并自己堆叠这些条。hbar glyph方法接受一个agument left,默认为零,但您可以将其设置为固定值或CDS列。如果CDS列是阵列或系列,这也会更容易:

left = offset
for x in years:
    right = left + exports[x]
    p.hbar(left=left, right=right)
    left = right

right = offset
for x in years:
    left = right - imports[x]
    p.hbar(left=left, right=right)
    right = left
使用a在客户端进行堆叠。基本上,您可以实现,但需要添加偏移量


我使用这个函数来定义颜色范围,而不从零开始。 我希望它能帮助你

def painter(rate,max_value,min_value,palette):
        darkness = int(float(len(palette)-1) * float(rate - min_value) / float(max_value - min_value))
        return palette[darkness]

请发布实际代码,而不是代码的图像。@James修复了它!
def painter(rate,max_value,min_value,palette):
        darkness = int(float(len(palette)-1) * float(rate - min_value) / float(max_value - min_value))
        return palette[darkness]