Я пытаюсь добавить полиномиальную линию тренда к графику с двумя осями Y, линия тренда должна следовать за трассировкой, отображающей недельный столбец в зависимости от времени.
Цель диаграммы — посмотреть на результат с течением времени и определить перегиб в наборе данных при введении новой переменной.
Набор данных:
date weekly partially fully
3/28/20 2 0 0
4/4/20 5 0 0
4/11/20 3 0 0
4/18/20 6 0 0
4/25/20 2 0 0
5/2/20 3 0 0
5/9/20 5 0 0
5/16/20 1 0 0
5/23/20 0 0 0
5/30/20 2 0 0
6/6/20 2 0 0
6/13/20 0 0 0
6/20/20 0 0 0
6/27/20 0 0 0
7/4/20 0 0 0
7/11/20 0 0 0
7/18/20 0 0 0
7/25/20 1 0 0
8/1/20 0 0 0
8/8/20 0 0 0
8/15/20 0 0 0
8/22/20 1 0 0
8/29/20 1 0 0
9/5/20 1 0 0
9/12/20 0 0 0
9/19/20 0 0 0
9/26/20 0 0 0
10/3/20 0 0 0
10/10/20 0 0 0
10/17/20 0 0 0
10/24/20 4 0 0
10/31/20 4 0 0
11/7/20 15 0 0
11/14/20 6 0 0
11/21/20 2 0 0
11/28/20 1 0 0
12/5/20 4 0 0
12/12/20 4 0 0
12/19/20 7 0 0
12/26/20 0 0 0
1/2/21 7 406 0
1/9/21 5 406 0
1/16/21 11 406 0
1/23/21 8 242 395
1/30/21 2 241 396
2/6/21 5 241 396
2/13/21 4 22 615
2/20/21 6 81 625
2/27/21 2 98 625
3/6/21 3 98 625
3/13/21 1 98 625
3/20/21 2 85 693
3/27/21 5 84 709
4/3/21 5 84 710
4/10/21 2 84 760
4/17/21 3 31 849
Я знаю, что это можно сделать с помощью сюжетного экспресса, но он не поддерживает двойные оси из того, что я могу найти, что мне требуется из-за разницы в значениях на порядок.
Весь вспомогательный материал, с которым я столкнулся в своем легкомысленном поиске в Google до сих пор, был очень сложным для чего-то, что, как я знаю, невероятно просто в пакетах электронных таблиц, таких как Excel.
Вот мой код:
import pandas as pd
import plotly.graph_objects as go
from plotly.subplots import make_subplots
# Create figure with secondary y-axis
fig = make_subplots(specs=[[{"secondary_y": True}]])
# Add traces
fig.add_trace(go.Scatter(x=df['date'], y=df['full'], name="Indicator 2",line=dict(color="Green"),opacity=0.01,fill='tozeroy',), secondary_y=True,)
fig.add_trace(go.Scatter(x=df['date'], y=df['weekly'], name="Weekly",line=dict(color="Red")),secondary_y=False,)
# Add figure title
fig.update_layout(
title_text="Change over Time",width = 1200, height = 600)
# Set x-axis title
fig.update_xaxes(title_text="xaxis title")
# Set y-axes titles
fig.update_yaxes(title_text="<b>primary</b> yaxis1", secondary_y=False)
fig.update_yaxes(title_text="<b>secondary</b> yaxis2", secondary_y=True)
fig.show()
Это текущий вывод графика:
Весьма признателен.