ich lese Messdaten ein und stelle sie mit Hilfe von matplotlib in tkinter da.
Die Messwerte werden in einem Sekundentakt eingelesen und in eine Liste abgespeichert. Zu dem wird zu jedem Messwert die aktuelle Uhrzeit abgespeichert. Das mache ich mithilfe von " time.strftime("%H:%M:%S") ".
Somit habe ich zu jedem Messwert, die Zeit als String vorliegen. Wenn ich nun die Werte plotten lasse, erscheinen auf der X-Achse die Zeit und zwar zu jedem Messwert, wodurch man die Zeiten nicht mehr lesen kann.
Ich würde gerne unabhängig von der Anzahl der Messwerte nur 10 Zeiten auf der X-Achse anzeigen lassen. Natürlich den Anfangswert, den Endwert und 8 Werte dazwischen zur Orientierung.
Wie könnte man das realisieren?
Beispielcode:
Code: Alles auswählen
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import matplotlib.ticker as ticker
import tkinter as tk
import random
import time
import numpy as np
fig = Figure(figsize = (9, 6), facecolor = "white")
axis = fig.add_subplot(111)
fig.autofmt_xdate()
power_list = list()
time_list = list()
for i in range(1, 30):
power_list.append(random.randint(0, 10))
time_list.append(time.strftime("%H:%M:%S"))
time.sleep(1)
gui = tk.Tk()
axis.plot(time_list, power_list, 'r')
canvas = FigureCanvasTkAgg(fig, master = gui)
canvas._tkcanvas.pack(side = tk.TOP, fill = tk.BOTH, expand = 1)
gui.mainloop()