ich habe ein problem mit der darstellung meines plots(mit matplotlib).
Die werte, auf der zeitachse(ax.plot_date), sind ungleichmaessig verteilt,
sodass sich aufgrund der stauchung einige werte ueberlappen.
Ich moechte aber jeden wert erkennen koennen. Ich wuerde gerne eine art stretch einfuegen.
Das ganze sollte sekunden genau sein.(= keine ueberlappung)
Die Zeiitachsen liegen zwischen min 1 tag und ca. max 2 jahren. (druchnittslaenge 3 monate)
Die anzahl an werten liegt zwischen 1 und ca. max 10 000 (durchschnittsanzahl 350 werte)
Im bsp. sind es ca 2 monate und 50 werte.
ohne alles macht er woechentlich und ueberlappt.
wenn ich nach stunden einordne(ax.xaxis.set_major_locator(mdates.HourLocator(byhour=[0,1])))
sieht nur die einteilung anders aus immernoch ueberlappung
bei minuten( ax.xaxis.set_major_locator(mdates.MinuteLocator(byminute=[0,30])) )
gibt es den ticks fehler, wobei ich im beispiel nur ca 50 werte uebergebe.
Code: Alles auswählen
import sqlite3
import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt
import datetime
from datetime import datetime
import matplotlib.dates as dates
import matplotlib.dates as mdates
import numpy as np
con = sqlite3.connect('ba2c.db3')
def graph_data2(dbname):
with con:
try:
#figsize=(16,6) ev einfuegen
fig = plt.figure()
fig, ax = plt.subplots()
cur = con.cursor()
for row in cur.execute('select * from {} where send="3294" or rec="3294";' .format(dbname) ):
sqldate = row[12]
sqlval = row[11]
#datetime_object = datetime.strptime('2017-03-01T13:24:02','%Y-%m-%dT%H:%M:%S')
datetime_object = datetime.strptime(sqldate,'%Y-%m-%dT%H:%M:%S')
plt_dates1 = dates.date2num(datetime_object)
ax.plot_date(plt_dates1, sqlval)
ax.set_title('Plot a lot')
plt.ylabel('Values')
#fail section
#hours = mdates.HourLocator()
#ax.set_xlim(datemin, datemax)
#ax.xaxis.set_minor_locator(hours)
#ax.xaxis.set_major_locator(mdates.HourLocator(byhour=[0,1]))
#ax.xaxis.set_major_locator(mdates.MinuteLocator(byminute=[0,30]))
#ax.xaxis.set_major_locator(mdates.HourLocator(byhour=[0,1]))
#fail ax.axis('scaled')
#minor_locator = AutoMinorLocator(2)
#ax.xaxis.set_minor_locator(minor_locator)
#hours = mdates.MinuteLocator()
#ax.xaxis.set_minor_locator(hours)
fig.autofmt_xdate()
fig.savefig('z99.png')
except:
print ("Fehler in ")
sys.exit()
graph_data2('tresor')
ps. das bild hab ich auch nicht am rand abgeschnitten..