Нелегко предоставить полное решение без образца вашего набора данных, но я все еще думаю, что понял это. Сейчас я немного спешу, поэтому коротко скажу:
Столбцы - это большие числа, строки - это маленькие числа. Из коробки fig = make_subplots(specs=[[{"secondary_y": True}]])
обеспечит это:
Трассировка линии сверху = Хорошо. Номера столбцов слева = Bad.
Изменение порядка, в котором вы применяете различные следы к фигуре, не поможет. Но вы можете свободно указать, на какой стороне графика вы хотите, чтобы ваша первичная и вторичная оси y выглядели так:
fig.update_layout(dict(yaxis2={'anchor': 'x', 'overlaying': 'y', 'side': 'left'},
yaxis={'anchor': 'x', 'domain': [0.0, 1.0], 'side':'right'}))
Добавьте это к миксу, и вы получите:
Трасса линии сверху = Хорошо. Номера столбцов справа = Хорошо.
Полный код с образцом данных:
# imports
import plotly.graph_objects as go
import numpy as np
from plotly.subplots import make_subplots
# set figure twith multiple y axes
fig = make_subplots(specs=[[{"secondary_y": True}]])
# blue line with numbers from 1 to 3
fig.add_trace(
go.Scatter(x=[0, 1, 2, 3, 4, 5],
y=[1.5, 1.0, 1.3, 2.7, 1.8, 2.9]),secondary_y=True)
# red bars with big numbers
fig.add_trace(
go.Bar(x=[0, 1, 2, 3, 4, 5],
y=[np.nan, np.nan, np.nan, 100000, 20000, 250000]))
# update layout to put axes and values in the desired positions
fig.update_layout(dict(yaxis2={'anchor': 'x', 'overlaying': 'y', 'side': 'left'},
yaxis={'anchor': 'x', 'domain': [0.0, 1.0], 'side':'right'}))
fig.show()