Для задания второй оси в Plotly используется несколько другой подход, нежели в matplotlib - там ось не клонируется ( вызовом twinx ), а задается ее наличии при создании холста.
Ранее мы использовали метод go.Figure для его создания, но он не принимает аргументов для определения второй оси. Поэтому надо использовать другой метод make_subplots:
from plotly.subplots import make_subplots
fig = make_subplots(specs=[[{"secondary_y":True}]])
Как можно видеть, задание второй оси регулируется параметром secondary_y, но он оборачивается в хитрый тип - список списков. Зачем так сделали разработчки Plotly - непонятно, но именно так это работает.
Далее мы также создаем две точечных диаграммы:
trc1 = go.Scatter(
x = x, y = y,
name = 'Scatter sample',
line = dict(color= 'green', dash='dot'),
marker_symbol ='diamond-open',
mode ='markers+lines'
)
trc2 = go.Scatter(
x = x, y = y2,
name = 'Scatter sample 2',
line = dict(color= 'blue', dash='dot'),
marker_symbol ='diamond-open',
mode ='markers+lines'
)
И при добавлении указываем на какую ось добавлять.
Первый - на основную:
fig.add_trace ( trc1 , secondary_y=False )
После этого добавления у нас появляется данные первой диаграммы:
Как можно видеть - второй оси пока еще нет.
Теперь добавляем вторую диаграмму на вторую ось:
fig.add_trace ( trc2 , secondary_y=True )
И вот тут ось уже появляется:
Для подписи оси X используется тот же метод:
fig.update_xaxes( title = 'My new X axis' )
А вот для подписи осей Y уже надо указывать какую:
fig.update_yaxes( title = 'Primary Y' , secondary_y=False )
fig.update_yaxes( title = 'Secondary Y' , secondary_y=True )
Вот результат:
Таким образом создание второй оси в Plotly делается несколько по-другому, но тоже несложно.
No comments:
Post a Comment