Боке, как сделать график линии тренда с ошибкой на основе кадра данных панд? - PullRequest
0 голосов
/ 17 января 2019

Я пытаюсь сделать такой же график, как этот:

enter image description here

Моя попытка до сих пор была:

from bokeh.io import  show
from bokeh.models import ColumnDataSource
from bokeh.plotting import figure
import pandas as pd

from datetime import datetime

def date_(day):
    return datetime(2018, 1, day)


df = pd.DataFrame(
{
"date": [date_(1),date_(2),date_(3),date_(4),date_(5),date_(6),date_(7),date_(8),date_(9),date_(10)],
"mean": [10,8,9, 11,12,6, 8,3,8,7],
"std": [2,1,3,2,1,4, 2,3,1,4]
})
df['mean_p_std'] = df['mean'] + df['std']
df['mean_m_std'] = df['mean'] - df['std']

source = ColumnDataSource(data=df)

plot = figure(x_axis_type="datetime", plot_width=800, plot_height=350)
plot.line('date', 'mean', source=source ,line_color='black', line_width=4)

plot.patch('date','mean_p_std',alpha=0.5, line_width=2, source=source)
plot.patch('date','mean_m_std',alpha=0.5, line_width=2, source=source)

show(plot)

enter image description here

Я пытался вычислить верхнюю и нижнюю границы, но я не понял правильно

1 Ответ

0 голосов
/ 17 января 2019

Вы должны собрать массивы x и y в своем патче. Это требует некоторого добавления.

>>> plot = figure(x_axis_type="datetime", plot_width=800, plot_height=350)
>>> plot.line('date', 'mean', source=source ,line_color='black', line_width=4)
>>> x = df['date'].append(df['date'].sort_index(ascending=False))
>>> y = df['mean_p_std'].append(df['mean_m_std'].sort_index(ascending=False))

Затем вы строите свой патч:

>>> plot.patch(x=x, y=y, alpha=0.5, line_width=2)
...