При использовании цикла for в блокноте ничего не отображается - PullRequest
0 голосов
/ 12 октября 2019

Идея состоит в том, чтобы построить и получить следующий рисунок.

enter image description here

Следующий код был использован для получения вышеуказанного

from random import randint
import plotly.graph_objects as go


x1 = [randint(0, 9) for p in range(0, 10)]
x2 = [randint(0, 9) for p in range(0, 10)]
x3 = [randint(0, 9) for p in range(0, 10)]

time=list(range(0, len(x1))) 

fig = go.Figure()


fig.add_trace(go.Scatter(x=time, y=x1,
                    mode='lines',
                    name='X1'))

fig.add_trace(go.Scatter(x=time, y=x2,
                    mode='lines',
                    name='X2'))


fig.add_trace(go.Scatter(x=time, y=x3,
                    mode='lines',
                    name='X3'))

Но, чтобы сделать код более эффективным, я попробовал что-то вроде этого, которое я получил по этой ссылке

Data = [x1, x2, x3] ## Это может быть неправильно

   for i in range(0,2):
      trace = go.Scatter( x = times,
                               y = data[:, i],
                               mode = 'markers+lines'
                             )

Ничего не возникало, когда я пытался использовать цикл for для построения графика с использованием plotly.

Благодарим за любую помощь. Спасибо

1 Ответ

2 голосов
/ 12 октября 2019

Я не знаю, почему первая версия показывает без fig.show(), а без второго, но в основном с использованием matplotlib или plotly или другого модуля (в скрипте, оболочке или ноутбуке python), я должен использовать fig.show() (илиplt.show() для matplotlib) для просмотра графика.

После изменения нескольких ошибок - y = data[i] вместо y = data[:, i] и range(3) вместо range(0, 2) - этот код работает для меня в notebook

from random import randint
import plotly.graph_objects as go

x1 = [randint(0, 9) for p in range(10)]
x2 = [randint(0, 9) for p in range(10)]
x3 = [randint(0, 9) for p in range(10)]

time = list(range(len(x1))) 

data = [x1, x2, x3] 

fig = go.Figure()

for i in range(3):
    fig.add_trace(go.Scatter(x=time, y=data[i], mode='markers+lines', name='X{}'.format(i)))

fig.show()  
...