Автоматическая настройка диапазона оси, чтобы маркер вписывался в Plotly - PullRequest
2 голосов
/ 22 января 2020

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

import plotly.graph_objs as go

x1 = [1, 2, 3]
y1 = [1, 2, 1]
x2 = [1, 2]
y2 = [2, 1]
xmin = min(min(x1), min(x2))
xmax = max(max(x1), max(x2))
figure1=go.Figure(
    data=[
        go.Scatter(x=x1,
                   y=y1,
                   marker={'size': 20})
    ],
    layout={'xaxis': {'range': [xmin, xmax]}}
)
figure2=go.Figure(
    data=[
        go.Scatter(x=x2,
                   y=y2,
                   marker={'size': 20})
    ],
    layout={'xaxis': {'range': [xmin, xmax]}}
)
figure1.show()
figure2.show()

Возможно ли автоматически отрегулировать пределы оси настолько, чтобы маркер уместился? Или, может быть, есть другое решение для этой задачи?

Спасибо!

enter image description here

Кстати, если бы я мог просто прочитать, что такое оси ограничения, которые устанавливаются автоматически, это было бы очень полезно

1 Ответ

1 голос
/ 23 января 2020

Вариант 1: отрегулируйте xmin и xmax

Во многих случаях вам нужно всего лишь добавить небольшие корректировки к вашим расчетным xmin и xmax:

enter image description here

Вариант 2: отрегулируйте отступы

Вы можете создать больше пространства между областью построения графика и линиями оси, используя аргумент pad в go.layout.Margin(). Вы также можете изменить настройку, используя аргументы l, r, t, b.

enter image description here

# imports
import plotly.graph_objs as go

x1 = [1, 2, 3]
y1 = [1, 2, 1]
x2 = [1, 2]
y2 = [2, 1]
xmin = min(min(x1), min(x2))
xmax = max(max(x1), max(x2))

xmin_adjust = 0.5
xmax_adjust = 0.5

figure1=go.Figure(
    data=[go.Scatter(x=x1,
                     y=y1,
                    marker={'size': 20})],
    layout={'xaxis': {'range': [xmin-xmin_adjust, xmax+xmax_adjust]},
            'margin':go.layout.Margin(l=50, r=50, b=50, t=50, pad=50)})

figure2=go.Figure(
       data=[go.Scatter(x=x2,
                        y=y2,
                        marker={'size': 20})],

       layout={'xaxis': {'range': [xmin-xmin_adjust, xmax+xmax_adjust]},
            'margin':go.layout.Margin(l=50, r=50, b=50, t=50, pad=50)})

figure1.show()
figure2.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...