Приведенный ниже код генерирует случайные данные и отображает их в режиме реального времени с Matplotlib. Ползунки позволяют пользователю изменить диапазон оси Y. Все это работает. проблема : при изменении размера размера окна или перемещением окна возникает проблема с производительностью: сюжет отстает в течение 5 секунд (а иногда и возвращается, а затем снова отстает), иногда даже ближе к 10 секунд (в среднем i5). matplotlib.animation ?
import numpy as np, threading, time
import matplotlib.animation as animation, matplotlib.pyplot as plt, matplotlib.widgets as widgets
class Test():
def generate(self): # generate random data
while True:
self.realtime_y = {i: np.random.rand(100) for i in range(4)}
self.realtime_m = {i: np.random.rand(100) for i in range(4)}
time.sleep(0.030)
def start_gen(self):
threading.Thread(target=self.generate).start()
def realtime_visualization(self):
fig = plt.figure("Test", figsize=(10, 6))
ax1, ax2, ax3, ax4 = fig.subplots(4)
ax1.set_ylim(Y_AXIS_RANGE)
ax2.set_ylim(Y_AXIS_RANGE)
sliders = [widgets.Slider(ax3, f"Ymin", Y_AXIS_RANGE[0], Y_AXIS_RANGE[1], valinit=Y_AXIS_RANGE[0]),
widgets.Slider(ax4, f"Ymax", Y_AXIS_RANGE[0], Y_AXIS_RANGE[1], valinit=Y_AXIS_RANGE[1])]
sliders[0].on_changed(lambda v: [ax1.set_ylim(bottom=v), ax2.set_ylim(bottom=v)])
sliders[1].on_changed(lambda v: [ax1.set_ylim(top=v), ax2.set_ylim(top=v)])
l1 = {}
l2 = {}
for i, c in enumerate(["k", "r", "g", "b"]):
l1[i], *_ = ax1.plot(self.realtime_y[i], color=c)
l2[i], *_ = ax2.plot(self.realtime_m[i], color=c)
def func(n):
for i in range(4):
l1[i].set_ydata(self.realtime_y[i])
l2[i].set_ydata(self.realtime_m[i])
self.realtime_animation = animation.FuncAnimation(fig, func, frames=None, interval=30, blit=False, cache_frame_data=False)
plt.show()
Y_AXIS_RANGE = [-3, 3]
t = Test()
t.start_gen()
t.realtime_visualization()
Очевидно, что с интервалом = 500 Проблема менее заметна, но анимация имеет меньше FP, что не всегда возможно (например, если у нас быстро движущиеся данные).
Приведенный ниже код генерирует случайные данные и отображает их в режиме реального времени с Matplotlib. Ползунки позволяют пользователю изменить диапазон оси Y. Все это работает. [b] проблема [/b]: при изменении размера размера окна или перемещением окна возникает проблема с производительностью: сюжет отстает в течение 5 секунд (а иногда и возвращается, а затем снова отстает), иногда даже ближе к 10 секунд (в среднем i5). matplotlib.animation ?
[code]import numpy as np, threading, time import matplotlib.animation as animation, matplotlib.pyplot as plt, matplotlib.widgets as widgets class Test(): def generate(self): # generate random data while True: self.realtime_y = {i: np.random.rand(100) for i in range(4)} self.realtime_m = {i: np.random.rand(100) for i in range(4)} time.sleep(0.030) def start_gen(self): threading.Thread(target=self.generate).start() def realtime_visualization(self): fig = plt.figure("Test", figsize=(10, 6)) ax1, ax2, ax3, ax4 = fig.subplots(4) ax1.set_ylim(Y_AXIS_RANGE) ax2.set_ylim(Y_AXIS_RANGE) sliders = [widgets.Slider(ax3, f"Ymin", Y_AXIS_RANGE[0], Y_AXIS_RANGE[1], valinit=Y_AXIS_RANGE[0]), widgets.Slider(ax4, f"Ymax", Y_AXIS_RANGE[0], Y_AXIS_RANGE[1], valinit=Y_AXIS_RANGE[1])] sliders[0].on_changed(lambda v: [ax1.set_ylim(bottom=v), ax2.set_ylim(bottom=v)]) sliders[1].on_changed(lambda v: [ax1.set_ylim(top=v), ax2.set_ylim(top=v)]) l1 = {} l2 = {} for i, c in enumerate(["k", "r", "g", "b"]): l1[i], *_ = ax1.plot(self.realtime_y[i], color=c) l2[i], *_ = ax2.plot(self.realtime_m[i], color=c) def func(n): for i in range(4): l1[i].set_ydata(self.realtime_y[i]) l2[i].set_ydata(self.realtime_m[i]) self.realtime_animation = animation.FuncAnimation(fig, func, frames=None, interval=30, blit=False, cache_frame_data=False) plt.show() Y_AXIS_RANGE = [-3, 3] t = Test() t.start_gen() t.realtime_visualization() [/code] Очевидно, что с интервалом = 500 Проблема менее заметна, но анимация имеет меньше FP, что не всегда возможно (например, если у нас быстро движущиеся данные).
При попытке повторить анимацию с помощью Animation-Iteration-Count анимация сбрасывается до последней итерации, когда анимация-fill-mode перейдет вперед.
Я хотел анимировать перемещение элемента div вперед, останавливаясь, затем снова двигаясь...
Скажите, что у меня есть представление о контейнере, которое я использую для применения последовательного стиля к различным содержащимся представлениям.
struct FormattedContainer: View {
let content: Content
Я написал две функции, которые регулируют положение окна игры, но каждый раз, когда эти функции запускаются, размер игровых объектов либо увеличивается, либо уменьшается. Вероятно, это проблема, связанная с разрешением.
Код:
public void...
Я хочу создать график журнала
Однако результат не показывает небольшую сетку и что -то подобное
Введите описание изображения здесь
Что я могу сделать со сценарием. Спасибо!
import matplotlib.pyplot as plt
import numpy as np