Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用Bokeh绘制时间序列_Python_Plot_Data Visualization_Bokeh - Fatal编程技术网

Python 用Bokeh绘制时间序列

Python 用Bokeh绘制时间序列,python,plot,data-visualization,bokeh,Python,Plot,Data Visualization,Bokeh,我正在处理一些股票时间序列数据。 我正在使用Bokeh将上述数据可视化 我试图将收盘价形象化存储在一个名为Close的列中。 现在有另一列Bool,它有布尔数据0或1,基于我对数据所做的某些计算 我必须绘制收盘股票,使线图中的颜色在布尔列中的两个值1之间改变颜色。 下面是Bool列的一些值的真实示例 因此,除布尔列中两个1之间的0外,闭合图将为蓝色。对于这些情况,情节必须是红色的 我不太习惯使用Bokeh,所以如果您能在这里帮助我,那就太好了您的意思是这样的吗?适用于Bokeh v1.0.4 i

我正在处理一些股票时间序列数据。 我正在使用Bokeh将上述数据可视化

我试图将收盘价形象化存储在一个名为Close的列中。 现在有另一列Bool,它有布尔数据0或1,基于我对数据所做的某些计算

我必须绘制收盘股票,使线图中的颜色在布尔列中的两个值1之间改变颜色。 下面是Bool列的一些值的真实示例

因此,除布尔列中两个1之间的0外,闭合图将为蓝色。对于这些情况,情节必须是红色的


我不太习惯使用Bokeh,所以如果您能在这里帮助我,那就太好了

您的意思是这样的吗?适用于Bokeh v1.0.4

import pandas as pd
import numpy as np
from bokeh.models import ColumnDataSource
from bokeh.plotting import figure, show

bools = [0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1]
colors = ['red' if bool == 0 else 'blue' for bool in bools]

df = pd.DataFrame(data = np.random.rand(len(bools), 1), columns = ['close_price'], index = pd.date_range(start = '01-01-2015', periods = len(bools), freq = 'd'))

xs, ys = [], []
for xs_value, ys_value in zip(df.index.values, df['close_price'].values):
    if len(xs) > 0 and len(ys) > 0:
        xs.append([xs[-1][1], xs_value])
        ys.append([ys[-1][1], ys_value])
    else:
        xs.append([xs_value, xs_value])
        ys.append([ys_value, ys_value])

source = ColumnDataSource(dict(xs = xs, ys = ys, color = colors))

p = figure(width = 500, height = 300, x_axis_type = "datetime")
p.multi_line(xs = 'xs',
             ys = 'ys',
             color = 'color',
             source = source,
             line_width = 3)
show(p)
结果:

import pandas as pd
import numpy as np
from bokeh.models import ColumnDataSource
from bokeh.plotting import figure, show

bools = [0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1]
colors = ['red' if bool == 0 else 'blue' for bool in bools]

df = pd.DataFrame(data = np.random.rand(len(bools), 1), columns = ['close_price'], index = pd.date_range(start = '01-01-2015', periods = len(bools), freq = 'd'))

xs, ys = [], []
for xs_value, ys_value in zip(df.index.values, df['close_price'].values):
    if len(xs) > 0 and len(ys) > 0:
        xs.append([xs[-1][1], xs_value])
        ys.append([ys[-1][1], ys_value])
    else:
        xs.append([xs_value, xs_value])
        ys.append([ys_value, ys_value])

source = ColumnDataSource(dict(xs = xs, ys = ys, color = colors))

p = figure(width = 500, height = 300, x_axis_type = "datetime")
p.multi_line(xs = 'xs',
             ys = 'ys',
             color = 'color',
             source = source,
             line_width = 3)
show(p)