#python #datetime #matplotlib
#python #datetime #matplotlib
Вопрос:
я пытаюсь показать некоторый результат в виде графиков из моей таблицы, используя matplotlib, и показать на графике текст
которые показывают x и y в каждой точке
но он продолжает показывать мне эту ошибку
y = float(self.convert_yunits(y))
TypeError: float() argument must be a string or a number, not 'NoneType'
это мой код
def total_graphs (self): #pushButton_162
self.connection = psycopg2.connect(user="postgres",
password="password",
host="localhost",
database="database")
self.cur = self.connection.cursor()
date_0 = str(self.dateEdit_60.text())
date_1 = str(self.dateEdit_59.text())
selected_day = self.dateEdit_60.date()
last_day = selected_day.addDays(-1)
last_day_str = last_day.toString(self.dateEdit_60.displayFormat())
self.cur.execute( '''SELECT date, total_revenu, total_depance, total_différence FROM total_jr WHERE date BETWEEN %s AND %s'''
,(date_0, date_1))
rows = self.cur.fetchall()
date = []
total_revenu = []
for row in rows:
date.append(row[0])
total_revenu.append(row[1])
figure,ax=plt.subplots()
ax.set_xlabel("date(jour)")
ax.set_ylabel("montant (DZD)")
line1, = plt.plot(date, total_revenu, marker="o", label="revenu total")
for x,y in zip(date,total_revenu):
label = f"({x},{y})" #"{:.2f}".format(y)
plt.annotate(label, # this is the text
(x,y), # this is the point to label
textcoords="offset points", # how to position the text
xytext=(0,10), # distance from text to points (x,y)
ha='center') # horizontal alignment can be left, right or center
plt.legend(handles=[line1])
plt.show(block=False)
это полная ошибка
Traceback (most recent call last):
File "C:UserszakariaAppDataLocalProgramsPythonPython38libsite-packagesmatplotlibbackendsbackend_qt5.py", line 480, in _draw_idle
self.draw()
File "C:UserszakariaAppDataLocalProgramsPythonPython38libsite-packagesmatplotlibbackendsbackend_agg.py", line 407, in draw
self.figure.draw(self.renderer)
File "C:UserszakariaAppDataLocalProgramsPythonPython38libsite-packagesmatplotlibartist.py", line 41, in draw_wrapper
return draw(artist, renderer, *args, **kwargs)
File "C:UserszakariaAppDataLocalProgramsPythonPython38libsite-packagesmatplotlibfigure.py", line 1863, in draw
mimage._draw_list_compositing_images(
File "C:UserszakariaAppDataLocalProgramsPythonPython38libsite-packagesmatplotlibimage.py", line 131, in _draw_list_compositing_images
a.draw(renderer)
File "C:UserszakariaAppDataLocalProgramsPythonPython38libsite-packagesmatplotlibartist.py", line 41, in draw_wrapper
return draw(artist, renderer, *args, **kwargs)
File "C:UserszakariaAppDataLocalProgramsPythonPython38libsite-packagesmatplotlibcbookdeprecation.py", line 411, in wrapper
return func(*inner_args, **inner_kwargs)
File "C:UserszakariaAppDataLocalProgramsPythonPython38libsite-packagesmatplotlibaxes_base.py", line 2748, in draw
mimage._draw_list_compositing_images(renderer, self, artists)
File "C:UserszakariaAppDataLocalProgramsPythonPython38libsite-packagesmatplotlibimage.py", line 131, in _draw_list_compositing_images
a.draw(renderer)
File "C:UserszakariaAppDataLocalProgramsPythonPython38libsite-packagesmatplotlibartist.py", line 41, in draw_wrapper
return draw(artist, renderer, *args, **kwargs)
File "C:UserszakariaAppDataLocalProgramsPythonPython38libsite-packagesmatplotlibtext.py", line 1888, in draw
if not self.get_visible() or not self._check_xy(renderer):
File "C:UserszakariaAppDataLocalProgramsPythonPython38libsite-packagesmatplotlibtext.py", line 1483, in _check_xy
xy_pixel = self._get_position_xy(renderer)
File "C:UserszakariaAppDataLocalProgramsPythonPython38libsite-packagesmatplotlibtext.py", line 1476, in _get_position_xy
return self._get_xy(renderer, x, y, self.xycoords)
File "C:UserszakariaAppDataLocalProgramsPythonPython38libsite-packagesmatplotlibtext.py", line 1346, in _get_xy
y = float(self.convert_yunits(y))
TypeError: float() argument must be a string or a number, not 'NoneType'
Traceback (most recent call last):
File "C:UserszakariaAppDataLocalProgramsPythonPython38libsite-packagesmatplotlibbackendsbackend_qt5.py", line 480, in _draw_idle
self.draw()
File "C:UserszakariaAppDataLocalProgramsPythonPython38libsite-packagesmatplotlibbackendsbackend_agg.py", line 407, in draw
self.figure.draw(self.renderer)
File "C:UserszakariaAppDataLocalProgramsPythonPython38libsite-packagesmatplotlibartist.py", line 41, in draw_wrapper
return draw(artist, renderer, *args, **kwargs)
File "C:UserszakariaAppDataLocalProgramsPythonPython38libsite-packagesmatplotlibfigure.py", line 1863, in draw
mimage._draw_list_compositing_images(
File "C:UserszakariaAppDataLocalProgramsPythonPython38libsite-packagesmatplotlibimage.py", line 131, in _draw_list_compositing_images
a.draw(renderer)
File "C:UserszakariaAppDataLocalProgramsPythonPython38libsite-packagesmatplotlibartist.py", line 41, in draw_wrapper
return draw(artist, renderer, *args, **kwargs)
File "C:UserszakariaAppDataLocalProgramsPythonPython38libsite-packagesmatplotlibcbookdeprecation.py", line 411, in wrapper
return func(*inner_args, **inner_kwargs)
File "C:UserszakariaAppDataLocalProgramsPythonPython38libsite-packagesmatplotlibaxes_base.py", line 2748, in draw
mimage._draw_list_compositing_images(renderer, self, artists)
File "C:UserszakariaAppDataLocalProgramsPythonPython38libsite-packagesmatplotlibimage.py", line 131, in _draw_list_compositing_images
a.draw(renderer)
File "C:UserszakariaAppDataLocalProgramsPythonPython38libsite-packagesmatplotlibartist.py", line 41, in draw_wrapper
return draw(artist, renderer, *args, **kwargs)
File "C:UserszakariaAppDataLocalProgramsPythonPython38libsite-packagesmatplotlibtext.py", line 1888, in draw
if not self.get_visible() or not self._check_xy(renderer):
File "C:UserszakariaAppDataLocalProgramsPythonPython38libsite-packagesmatplotlibtext.py", line 1483, in _check_xy
xy_pixel = self._get_position_xy(renderer)
File "C:UserszakariaAppDataLocalProgramsPythonPython38libsite-packagesmatplotlibtext.py", line 1476, in _get_position_xy
return self._get_xy(renderer, x, y, self.xycoords)
File "C:UserszakariaAppDataLocalProgramsPythonPython38libsite-packagesmatplotlibtext.py", line 1346, in _get_xy
y = float(self.convert_yunits(y))
TypeError: float() argument must be a string or a number, not 'NoneType'
есть ли способ исправить эту ошибку
Комментарии:
1. это помогло бы увидеть полную обратную трассировку здесь
2. мне очень жаль, что я не понимаю, что именно вы имеете в виду
3. строки, которая выдает ошибку,
y = float(self.convert_yunits(y))
, нет в вашем коде — пожалуйста, добавьте полную обратную трассировку ошибки, показывающую, какая строка вашего кода в конечном итоге приводит к ошибке.4. кажется, у вас есть
None
элементы в вашей переменной y; total_revenu, это так? если это так, вы можете попытаться заменить их числом, чтобы узнать, в чем проблема. в качестве альтернативы я бы попытался преобразовать список в массив numpy (с np.nan вместо None) и посмотреть, работает ли это.5. Определите стратегию, которая соответствует вашим потребностям, и поймайте / обработайте ошибку .