Основная проблема заключается в том, что значения даты не отображаются в отсортированном порядке. Их необходимо отсортировать явно.
Другая проблема состоит в том, что числа в столбце «Значение» имеют полный диапазон, отличный от других. Чтобы отобразить их на одном графике, можно добавить вторичную ось Y .
Поскольку столбец «Объем» не заполнен (содержит только нули), его можно оставить out.
Вот пример кода, пропускающий шаги преобразования, которые, вероятно, не нужны для последних plotly
версий:
import plotly.graph_objects as go
import pandas as pd
src = "https://...."
df = pd.read_csv(src,
sep=';',
names=[
'Open', 'Close', 'High', 'Low', 'Value',
'Volume', 'Date', 'End'
]).iloc[2:]
df = df.sort_values(by='Date')
for col in df.columns:
print(col, df[col].min(), df[col].max())
fig = go.Figure()
for col in ['Open', 'Close', 'High', 'Low', 'Value']:
fig.add_trace(
go.Scatter(
x=df['Date'],
y=df[col],
name=col,
yaxis='y1' if col == 'Value' else 'y2'
))
fig.update_layout(
yaxis=dict(
title="Price",
),
yaxis2=dict(
title="Volume",
anchor="x",
overlaying="y",
side="right"
))
fig.show()