Вы можете сделать маркерный график и затем наложить линейный график, чтобы получить желаемый результат, где маркерный график должен быть передан со списком цветов, созданным на основе условия.
Чтобы получить четкийрисунок см. ниже коды,
# make a dummy time data
x_values = pd.date_range(start=pd.Timestamp('2018-01-01'), end=pd.Timestamp('2019-01-01'), freq='1 D')
# making a random time series
y_values = np.random.randn(len(x_values))
# making color list
# red if the day is saturday or sunday else green
colors = ['red' if int(pd.Timestamp(d).weekday()) >= 5 else 'green' for d in x_values]
# make the plot
trace_0 = go.Scatter(
x=x_values,
y=y_values,
mode='markers',
marker=dict(
color = colors
)
)
trace_1 = go.Scatter(
x=x_values,
y=y_values,
mode='lines',
marker=dict(
color = 'black'
)
)
layout = dict(
title='Time Series with Rangeslider',
xaxis=dict(
rangeselector=dict(
buttons=list([
dict(count=1,
label='1m',
step='month',
stepmode='backward'),
dict(count=6,
label='6m',
step='month',
stepmode='backward'),
dict(step='all')
])
),
rangeslider=dict(
visible = True
),
type='date'
)
)
fig = {
'data': [trace_0, trace_1],
'layout': layout,
}
py.iplot(fig, filename='Plot')
График вывода
Я также реализовал ползунок диапазона, если это не такнеобходимо отредактировать его из макета.