我想用從資料庫中獲取的資料、電壓(浮點數)和時間(時間)繪制一個圖,我現在收到錯誤堆疊。請幫忙,或者有什么最好的方法可以解決它。?
import matplotlib.pyplot as plt
import numpy as np
import serial as ser
import time
import datetime
import mysql.connector
my_connect = mysql.connector.connect(host="localhost", user="Kennedy", passwd="Kennerdol05071994", database="ecg_db", auth_plugin="mysql_native_password")
mycursor = my_connect.cursor()
voltage_container = []
time_container = []
def fetch_voltage():
pat_id = 1
query = "SELECT voltage, time FROM ecg_data_tbl where patient_id = 1 "
mycursor.execute(query)
result = mycursor .fetchall()
voltage, time = list(zip(*result))
for volts in voltage:
voltage_container.append(volts)
voltage_data = np.array(voltage_container)
for tim in time:
time_container.append(tim)
time_data = np.array(time_container)
plt.plot(time_data, voltage_data)
fetch_voltage()
有人告訴我將它們轉換為我所做的陣列,但沒有任何改變。我得到的錯誤是:
Traceback (most recent call last):
File "C:\Users\Kennedy Mulenga\Desktop\Level 5\18136709_BIT_280_Arduino_ECG_Project\fetch_all.py", line 31, in <module>
fetch_voltage()
File "C:\Users\Kennedy Mulenga\Desktop\Level 5\18136709_BIT_280_Arduino_ECG_Project\fetch_all.py", line 28, in fetch_voltage
plt.plot(time_data, voltage_data)
File "C:\Users\Kennedy Mulenga\AppData\Local\Programs\Python\Python39\lib\site-packages\matplotlib\pyplot.py", line 3019, in plot
return gca().plot(
File "C:\Users\Kennedy Mulenga\AppData\Local\Programs\Python\Python39\lib\site-packages\matplotlib\axes\_axes.py", line 1607, in plot
self.add_line(line)
File "C:\Users\Kennedy Mulenga\AppData\Local\Programs\Python\Python39\lib\site-packages\matplotlib\axes\_base.py", line 2101, in add_line
self._update_line_limits(line)
File "C:\Users\Kennedy Mulenga\AppData\Local\Programs\Python\Python39\lib\site-packages\matplotlib\axes\_base.py", line 2123, in _update_line_limits
path = line.get_path()
File "C:\Users\Kennedy Mulenga\AppData\Local\Programs\Python\Python39\lib\site-packages\matplotlib\lines.py", line 1022, in get_path
self.recache()
File "C:\Users\Kennedy Mulenga\AppData\Local\Programs\Python\Python39\lib\site-packages\matplotlib\lines.py", line 663, in recache
x = _to_unmasked_float_array(xconv).ravel()
File "C:\Users\Kennedy Mulenga\AppData\Local\Programs\Python\Python39\lib\site-packages\matplotlib\cbook\__init__.py", line 1333, in _to_unmasked_float_array
return np.asarray(x, float)
TypeError: float() argument must be a string or a number, not 'datetime.timedelta'
uj5u.com熱心網友回復:
你的時間資料不是 matplotlib 熟悉的型別,所以它試圖自己轉換它,但它不能。而是讓它成為一種它可以自己處理的型別。
例如,一個常見的選擇是
for tim in time:
time_container.append(tim.total_seconds())
time_data = np.array(time_container)
現在您正在使用 datetime.timedelta 物件(即查詢結果)中的總秒數。這是一個浮點數,因此 matplotlib 可以繪制它。如果您不想要總秒數,您可以查看其他選項的檔案。
https://docs.python.org/3/library/datetime.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/342510.html
標籤:蟒蛇-3.x 约会时间 matplotlib
