散景情节条件背景颜色

时间:2017-04-07 13:29:44

标签: python pandas bokeh

我有一个包含布尔列的pandas数据框,如下所示:

my $book = Spreadsheet::Read->new();
my $book = ReadData 
('D:\Profiles\jmahroof\Desktop\Scheduled_Build_Overview.xls');
my $cell = "CD7";
my $n = "1";
my $send = $book->[$n]{$cell};
$send =~ s/\(/ /g;
$send =~ s/\)//g;

我想在Y上绘制B的值,在X上绘制基于C的条件背景颜色的A. 我的意思是这样的:simulated result

我可以使用盒子注释吗?

1 个答案:

答案 0 :(得分:2)

是的,可以使用left的{​​{1}}和right参数:

BoxAnnotation

为简化起见,我在此处添加了另一行,以获得绘制的import pandas as pd from bokeh.plotting import figure, show, output_file, output_notebook from bokeh.models import BoxAnnotation output_notebook() # dummy data df = pd.DataFrame({"A": [1, 2, 3, 4, 5, 6], "B": [3, 4, 4, 1, 2, 3], "C": [True, True, False, False, True, True]}) print(df) >>> A B C 0 1 3 True 1 2 4 True 2 3 4 False 3 4 1 False 4 5 2 True 5 6 3 True 计数。

现在,获取包含True的连续行:

True

最后绘制它:

df["cons"] = (df["C"].diff(1) != 0).astype('int').cumsum() 
mask = df["cons"] % 2 == 1

cons_indices = df[mask].groupby("cons").apply(lambda x: x.A.values)
print(cons_indices)

>>> cons
    1    [1, 2]
    3    [5, 6]
    dtype: object

该解决方案尚未处理单个p = figure(title="Annotations") p.line(df["A"], df["B"]) for cons_index in cons_indices: low_box = BoxAnnotation(left=cons_index.min(), right=cons_index.max(), fill_color="Blue") p.add_layout(low_box) show(p) (非连续True)值。但是,您尚未为此方案指定适当的行为。

enter image description here