Plotly Python: Масштабирование оси y на основе выбора диапазона по оси x для нескольких диаграмм

#python #plotly #plotly-dash #dashboard #plotly-python

Вопрос:

Я пытаюсь построить дневную цену и общее количество заявок на покупку и запрос в день для типичной акции на одной и той же цифре.

Вот что я сделал до сих пор, но я думаю, что есть более эффективный способ создать тот же сюжет, используя Plotly.

 import pandas as pd
import plotly.graph_objects as go

# Create the base figure
fig = go.Figure()
# Add a line graph
fig.add_trace(
    go.Scatter(x=df.index, y=df['price'], name='Daily Price'))

# Create financial buttons
fin_buttons = [
    {'count': 7, 'label': "1WTD", 'step': "day", 'stepmode': "todate"},
    dict(count=7, label="1W", step="day", stepmode="backward"),
    {'count': 1, 'label': "1MTD", 'step': "month", 'stepmode': "todate"},
    dict(count=1, label="1M", step="month", stepmode="backward"),
    {'count': 3, 'label': "3MTD", 'step': "month", 'stepmode': "todate"},
    dict(count=3, label="3M", step="month", stepmode="backward"),
    {'count': 6, 'label': "6MTD", 'step': "month", 'stepmode': "todate"},
    dict(count=6, label="6M", step="month", stepmode="backward"),
    {'count': 1, 'label': "YTD", 'step': "year", 'stepmode': "todate"},
    {'count': 1, 'label': "1Y", 'step': "year", 'stepmode': "backward"},
    dict(step="all")
]
# Create the date range buttons amp; show the plot
fig.update_layout({'xaxis': {'rangeselector': {'buttons': fin_buttons}}})
fig.update_layout(yaxis=dict(autorange=True))
# Add bar chart
fig.add_trace(
    go.Bar(name='Bids',
           x=df.index,
           y=df['bid']))
# Add bar chart
fig.add_trace(
    go.Bar(name='Asks',
           x=df.index,
           y=-df['ask']))
# Show the plot
fig.show()
 

Проблема autorange в том, что свойство не изменяет масштаб оси y. Другими словами, когда я нажимаю кнопку времени, ось y графика цены не сбрасывается автоматически!

введите описание изображения здесь

введите описание изображения здесь

Комментарии:

1. Говорят, что масштаб оси y не меняется при выборе селектора диапазона, но меняется ось x, а не значение оси y. Что значит, что масштаб не меняется? Кроме того, что такое эффективный код и что такое конкретный пример? Создание кнопки?

2. @r-новички Благодарим вас за ваш комментарий. 1) Я имею в виду, как заставить ось y корректироваться в зависимости от части отображаемых данных? 2) Под эффективным кодом я имею в виду, как эксперт по сюжету визуализирует эту задачу? Есть ли другой способ восстановить ту же фигуру?