Как сделать, чтобы Tkinter рисовал линии из интервала x и массива y NumPy? - PullRequest
0 голосов
/ 27 мая 2019

У меня есть два источника данных для отображения в виде координат X и Y на непрерывной линии Tkinter.Данные x генерируются из константы, например, 1.3Таким образом, каждое значение x должно быть на + 1,3 больше, чем последнее - например, 3.9, 5.2, 6.5 и так далее.Значения y хранятся в массиве numpy.Мне нужно создать линию на холсте в соответствии с этими двумя наборами данных.

У меня такое ощущение, что это так легко, и мне не хватает чего-то действительно глупого.Итак, извиняюсь, если это так.

В данный момент я генерирую массив строк, используя цикл for, но он слишком медленный (мне нужно загружать их в секунду).

x_start = 3
x_stop = 5
step = 1.3

for n in range(x_start, x_stop):
    x = n * step
    line_array[n * 2] = x
    line_array[n * 2 + 1] = array[n]

1 Ответ

0 голосов
/ 28 мая 2019

Вы можете просто позвонить Canvas.create_line(...) с массивом точек, созданным из ваших двух источников данных, как показано ниже:

from tkinter import *
import numpy.random

root = Tk()

canvas = Canvas(root, bg='white', width=1600, height=800)
canvas.pack(fill=BOTH, expand=1)

y_array = numpy.random.randint(100, 700, 5000) # generate 5000 y values

x_start = 3
x_stop = 5000
step = 1.3

# create the array of points and draw them
line_array = [(n*step, y_array[n]) for n in range(x_start, x_stop)]
canvas.create_line(line_array)

root.mainloop()

Для рисования линий в моем блокноте i7 требуется меньше секунды.

...