Установка диапазона оси для подграфика в Plotly-PythonPython

Программы на Python
Anonymous
Установка диапазона оси для подграфика в Plotly-Python

Сообщение Anonymous »

Я пытаюсь вручную установить диапазон одной (общей) оси Y на фигуре с несколькими графиками, но по какой-то причине это также влияет на диапазон других осей Y.

Взгляните на этот пример. Я начну с создания фигуры 3x2 с общей осью Y для каждой строки.

Код: Выделить всё

import numpy as np
import plotly.graph_objects as go
from plotly.subplots import make_subplots
import plotly.io as pio

pio.renderers.default = "browser"

np.random.seed(42)

N = 20
nrows, ncols, ntraces = 3, 2, 3

fig = make_subplots(
rows=nrows, cols=ncols,
shared_xaxes=True, shared_yaxes=True,
)

for r in range(nrows):
scale = 1 / 10 ** r
for c in range(ncols):
for t in range(ntraces):
y = np.random.randn(N) * scale
fig.add_trace(
row=r + 1, col=c + 1,
trace=go.Scatter(y=y, mode="markers+lines", name=f"trace {t}")
)
fig.update_layout(showlegend=False)
fig.show()
При этом создается следующая фигура:
Изображение

Теперь я хочу вручную установить диапазон только для первой строки, что я и делаю:

Код: Выделить всё

fig.update_yaxes(range=[-2, 2], row=1, col=1)
fig.show()
Это действительно устанавливает необходимый диапазон. Проблема в том, что это также нарушает работу всех остальных осей, изменяя их диапазон на какое-то автоматическое значение ():
Изображение

Я пробовал установка диапазона других строк вручную с использованием различных комбинаций range и rangemode='normal', например:

Код: Выделить всё

fig.update_yaxes(range=[None, None], row=2, col=1)
fig.update_yaxes(range=None, row=2, col=1)
fig.update_yaxes(rangemode='normal', row=2, col=1)
Кажется, ничего не работает...

Как вручную установить диапазон оси Y только для одной из осей?

Подробнее здесь: https://stackoverflow.com/questions/790 ... tly-python

Вернуться в «Python»