График динамического изменения графика с использованием matplotlib в Jupyter Notebook

У меня есть массив M x N 2D: i-я строка представляет это значение N точек в момент i.

Я хочу визуализировать точки [1 строку массива] в виде графика, в котором значения обновляются после небольшого интервала. Таким образом, график показывает по 1 строке за раз, затем обновляет значения до следующей строки, так далее и т. Д.

Я хочу сделать это в ноутбуке jupyter. Поиск ссылочных кодов.

Я пробовал следующие вещи, но не имел успеха:

http://community.plot.ly/t/updating-graph-with-new-data-every-100-ms-or-so/812

https://pythonprogramming.net/live-graphs-matplotlib-tutorial/

Создание динамического обновленного графика с помощью Python

Обновить строки в matplotlib

Вот альтернативное, возможно, более простое решение:

%matplotlib notebook import numpy as np import matplotlib.pyplot as plt m = 100 n = 100 matrix = np.random.normal(0,1,m*n).reshape(m,n) fig = plt.figure() ax = fig.add_subplot(111) plt.ion() fig.show() fig.canvas.draw() for i in range(0,100): ax.clear() ax.plot(matrix[i,:]) fig.canvas.draw() 

Я создал ноутбук ipython с несколькими примерами

https://github.com/anujgupta82/Musings/blob/master/Dynamic%20or%20Live%20update%20of%20a%20Plot.ipynb

В дополнение к @ 0aslam0 я использовал код здесь . Я только что изменил функцию анимации, чтобы получить следующую строку в следующий раз. Он рисует анимированную эволюцию (М шагов) всех N точек.

 from IPython.display import HTML import numpy as np from matplotlib import animation N = 5 M = 100 points_evo_array = np.random.rand(M,N) # First set up the figure, the axis, and the plot element we want to animate fig = plt.figure() ax = plt.axes(xlim=(0, M), ylim=(0, np.max(points_evo_array))) lines = [] lines = [ax.plot([], [])[0] for _ in range(N)] def init(): for line in lines: line.set_data([], []) return lines def animate(i): for j,line in enumerate(lines): line.set_data(range(i), [points_evo_array[:i,j]]) return lines # call the animator. blit=True means only re-draw the parts that have changed. anim = animation.FuncAnimation(fig, animate,np.arange(1, M), init_func=init, interval=10, blit=True) HTML(anim.to_html5_video()) 

Надеюсь, это будет полезно

Вот библиотека, которая занимается данными о реальном времени / записи данных в режиме реального времени ( джойстик ), хотя я не уверен, что она работает с jupyter. Вы можете установить его с помощью обычного pip install joystick .

Трудно сделать рабочее решение без дополнительной информации о ваших данных. Вот вариант:

 import joystick as jk import numpy as np class test(jk.Joystick): # initialize the infinite loop decorator _infinite_loop = jk.deco_infinite_loop() def _init(self, *args, **kwargs): """ Function called at initialization, see the docs """ # INIT DATA HERE self.shape = (10, 4) # M, N self.data = np.random.random(self.shape) self.xaxis = range(self.shape[1]) ############ # create a graph frame self.mygraph = self.add_frame( jk.Graph(name="TheName", size=(500, 500), pos=(50, 50), fmt="go-", xnpts=self.shape[1], freq_up=5, bgcol="w", xylim=(0, self.shape[1]-1, None, None))) @_infinite_loop(wait_time=0.5) def _generate_fake_data(self): # function looped every 0.5 second """ Loop starting with the simulation start, getting data and pushing it to the graph every 0.5 seconds """ # NEW (RANDOM) DATA new_data = np.random.random(self.shape[1]) # concatenate data self.data = np.vstack((self.data, new_data)) # push new data to the graph self.mygraph.set_xydata(self.xaxis, self.data[-1]) t = test() t.start() t.stop() t.exit() 

Этот код создаст график, который автоматически обновляется 5 раз в секунду (freq_up = 5), в то время как новые данные генерируются (произвольно) каждые 0,5 секунды (wait_time = 0,5) и выводятся на график для отображения.

Если вы не хотите, чтобы ось Y t.mygraph.xylim = (0, t.shape[1]-1, 0, 1) , введите t.mygraph.xylim = (0, t.shape[1]-1, 0, 1) .

Я мало знаю о matplotlib или jupyter. Тем не менее, меня интересуют графики. Я просто сделал какой-то поисковик и наткнулся на этот пост . Похоже, вам нужно отобразить график в виде HTML-видео, чтобы увидеть динамический граф.

Я пробовал этот пост. Это ноутбук, если вы хотите попробовать. Обратите внимание, что ядро ​​(python 2) требуется для создания видео. Вы можете прочитать об этом здесь .

Теперь вы хотите отобразить строку графика для строки. Я попробовал это . В этом ноутбуке у меня есть dump_data с 10 строками. Я случайным образом беру один и рисую их и показываю как видео.

Было интересно узнать о юпитере. Надеюсь это поможет.