У меня есть база данных SQL с датами в одной строке и значениями в другой
0 2019-09-30 12:03:35 363
1 2019-09-30 12:03:35 362
2 2019-09-30 12:03:35 363
3 2019-09-30 12:03:35 363
4 2019-09-30 12:03:35 363
Я хочу создать график с> 1000 значениями. Мой код работает так, как я хочу, но маркировка на оси X перегружена. Я искал решение, и оно должно как-то работать с «галочками», но я не могу сделать так, чтобы оно соответствовало моему конкретному Datetime из моей базы данных. Ярлыки по оси X переполнены и не читаются. Я хочу маркировать только в определенные периоды.
Я пробовал несколько учебных пособий и документации по "тикам", но они не обрабатывают данные строки, как у меня уже в моей базе данных.
import sqlite3 as lite
import pandas as pd
import matplotlib as matplt
import matplotlib.pyplot as plt
from fpdf import FPDF
import numpy as np
from matplotlib.ticker import (MultipleLocator, FormatStrFormatter, AutoMinorLocator)
datei = lite.connect("C://Users/Loos/Desktop/datenbankVersuch01.db")
conn = datei.cursor()
befehl = conn.execute('''SELECT * FROM sensorNeu''')
ausgeben = befehl.fetchall()
dataframeeins = pd.DataFrame(ausgeben)
print(dataframeeins.head(5))
print(dataframeeins.tail(5))
# info = dataframeeins[1].describe()
# print(dataframeeins.describe())
anzahlWerte = 400
periode = 400000
i = 0 # Zähler für die Werte
k = 0 # Nummerierung der Zwischenwerte
dates = []
values = []
zwischenspeicherSekunden = 0
zwischenspeicherWert = 0
for x in range(0, anzahlWerte):
# values.append(dataframeeins[1][(i * 4) + periode])
# dates.append(dataframeeins[0][(i * 4) + periode])
aktuelleZeit = dataframeeins[0][i + periode]
letzteZeichen = aktuelleZeit[17:19]
umwandeln = int(letzteZeichen)
zweiteZeit = dataframeeins[0][i + periode + 1]
letzteZeichenNeu = zweiteZeit[17:19]
umwandelnNeu = int(letzteZeichenNeu)
if k == 0:
#zwischenspeicherSekunden = umwandeln
zwischenspeicherSekunden = dataframeeins[0][i + periode]
# print(zwischenspeicherSekunden)
zwischenspeicherWert = dataframeeins[1][i+periode]
# print(zwischenspeicherWert)
k += 1
elif k != 0 and umwandeln == umwandelnNeu:
zwischenspeicherWert = (zwischenspeicherWert+dataframeeins[1][i+periode])/2
k += 1
elif k != 0 and umwandeln != umwandelnNeu:
# Wie groß ist der Abstand zwischen "umwandeln" und "umwandelnNeu"? eine oder mehrere sekunden
values.append(zwischenspeicherWert)
dates.append(zwischenspeicherSekunden)
k = 0
else:
print("FEHLER 0001: Keine Bedinung erfüllt!!!")
i += 1
aktuelleZeiten = dataframeeins[0][500000]
letzteZeichenn = aktuelleZeiten[17:19]
umwandeln = int(letzteZeichenn)
if umwandeln == 41:
print("Das letzte Zeichen ist 41")
#print(letzteZeichenn)
#print(dates[0])
#print(dates[1])
#print(dates[2])
#print(dates[3])
f, ax = plt.subplots()
# ax.set_xticks(np.arange(0))
# ax.xaxis.set_major_formatter(FormatStrFormatter('%s'))
plt.title("Der erste Versuch")
plt.suptitle("Prototyp01")
plt.plot(dates, values, marker='o', linestyle='--') # add linestyle=' ' or marker='o' or color='red'
plt.xlabel("Verlauf in Sekunden")
plt.ylabel("Sensorwert in mV/g")
plt.grid(True)
plt.show()
datei.commit()
datei.close()
КакМогу ли я пометить ось X как просто ярлык каждые 2,5 или 10 секунд, а не каждую секунду?