Python散景:同一行上有多个颜色段

时间:2016-08-26 14:55:37

标签: python bokeh

我使用的是python 3.5和bokeh 0.12.1,我试图在不同的段上绘制一条带有多种颜色的简单线条。基本上我希望线条具有基于列值的不同颜色。 这是我的代码的简化版本:

import numpy as np
from numpy import vectorize
import pandas as pd
from bokeh.plotting import figure, show, output_file


def f(x):
    return 2 * x


def color(x):
    if x < 20:
        return 0
    if 20 <= x < 60:
        return 1
    if 60 <= x < 80:
        return 0
    else:
        return 1


v_color = vectorize(color)
x = np.arange(0, 100, 1)
data = {'x': x, 'y': f(x), 'colors': v_color(x)}
df = pd.DataFrame(data=data)
# print(df)

p = figure(title="Line example")

p.line(df['x'], df['y'], legend="y=f(x)",
       # line_color="tomato",
       line_color="olivedrab",
       line_width=2)

p.legend.location = "top_left"

output_file("basic_line_test.html", title="line plot example")

show(p)  # open a browser

基本上这条线应该有一种颜色,让我们说'olivedrab&#39;当列的颜色为&#39;是0和番茄&#39;当值为1时。 我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

从Bokeh 0.12.1开始,目前不支持此功能。线条一次只能有一种颜色。你的下一个最好的选择是尝试multi_linesegments字形函数,但这样做会更冗长(你必须计算并提供eery单个段的起点/终点)。

这可能会在以后的版本中添加为一项功能,我鼓励您在项目GitHub issue tracker上提交功能请求。