Plotly: Как добавить горизонтальную линию в линейный график? - PullRequest
2 голосов
/ 29 марта 2020

Я сделал линейный график с кодом ниже, и я пытаюсь добавить горизонтальную линию при y = 1. Я попытался следовать инструкциям на сайте сюжета, но он все еще не отображается. Кто-нибудь знает почему?

date = can_tot_df.date
growth_factor = can_tot_df.growth_factor

trace0 = go.Scatter(
            x=date,
            y=growth_factor,
            mode = 'lines',
            name = 'growth_factor'
)

fig = go.Figure()
fig.add_shape(
        type='line',
        x0=date.min(),
        y0=1,
        x1=date.max(),
        y1=1,
        line=dict(
            color='Red',
        )
)


data = [trace0]
iplot(data)

Ответы [ 2 ]

1 голос
/ 29 марта 2020

Трудно сказать точно , что не так, без выборки ваших данных. Что я могу точно сказать, так это того, что вам не хватает аргументов xref и yref, указывающих, что линия рисуется в единицах вашей оси y и x. Судя по вашему примеру кода, это то, что вы хотели бы сделать, поскольку вы указали свои значения x в терминах дат.

Кроме того, вам не нужно беспокоиться о iplot для более новых версий plotly. Вы можете так же легко отобразить свой график, просто набрав fig.show(). На рисунке и примере кода ниже показано, как использовать fig.show() и как определять свои линии в единицах осей.

Сюжет:

enter image description here

Код:

import plotly.graph_objects as go
import numpy as np

x = np.arange(10)

fig = go.Figure(data=go.Scatter(x=x, y=x**2))

fig.add_shape(type='line',
                x0=0,
                y0=40,
                x1=8,
                y1=40,
                line=dict(color='Red',),
                xref='x',
                yref='y'
)


fig.show()

Альтернативой xref='x' является xref='paper'. Теперь вы можете указать x0 как число с плавающей точкой между 0 и 1, охватывающее начало и конец графика.

1 голос
/ 29 марта 2020

Вы добавляете строку к вашему fig объекту, но fig не передается в функцию iplot(), только к вашему data. Так что только след строится.

Если вы используете более позднюю версию plotly, новый синтаксис позволяет создавать этот график просто с использованием объекта fig, например:

from plotly import graph_objects as go

fig = go.Figure()

# Contrived dataset for example.
x = [1, 2, 3, 4]
y = [i**2 for i in x]

fig.add_trace(go.Scatter(
              x=x,
              y=y,
              mode = 'lines',
              name = 'growth_factor'))

fig.add_shape(type='line',
              x0=min(x),
              y0=5,
              x1=max(x),
              y1=5,
              line=dict(color='Red'))

fig.update_shapes(dict(xref='x', yref='y'))

fig.show()

Вот плотно документы для удобства.

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