Я хотел построить график с помощью библиотеки matplotlib для построения фреймов данных, считываемых из базы данных SQL без использования plt.pause, поэтому я создал класс для построения графиков и анимации данных, но проблема в том, что последняя точка связана с первой точка за линией
class graph:
def __init__(self,axes,max_entries=326):
self.axis_x=deque(maxlen=max_entries)
self.axis_y=deque(maxlen=max_entries)
self.axes=axes
self.max_entries=max_entries
self.lineplot,=axes.plot([],[], "ro-")
self.axes.set_autoscaley_on(True)
def add(self,x,y):
self.axis_x.append(x)
self.axis_y.append(y)
self.x_axis,self.y_axis=zip(*sorted(zip(self.axis_x,self.axis_y),key=lambda axis_x:axis_x[0]))
self.lineplot.set_data(self.x_axis,self.y_axis)
#self.axes.set_xlim(self.axis_x[0],self.axis_x[-1]+1e-9)
self.axes.relim();self.axes.autoscale_view()
def animate(self,figure,callback,interval=1000):
def wrapper(frame_index):
self.add(*callback(frame_index))
self.axes.relim();self.axes.autoscale_view()
return self.lineplot
animation.FuncAnimation(figure,wrapper,interval=interval)
Обходной путь, который я попытался отсортировать в процессе поиска в stackoverflow и на других веб-сайтах. Я также не решил проблему. Любая помощь будет полезна, если потребуется весь код. это