【发布时间】:2018-04-27 09:25:25
【问题描述】:
我只是想知道是否可以将时间用作 matplotlib 实时图的 x 轴值。 如果是这样,应该怎么做?我一直在尝试许多不同的方法,但最终都会出错。 这是我当前的代码:
update_label(label):
def getvoltage():
f=open("VoltageReadings.txt", "a+")
readings = [0]*100
maxsample = 100
counter = 0
while (counter < maxsample):
reading = adc.read_adc(0, gain=GAIN)
readings.append(reading)
counter += 1
avg = sum(readings)/100
voltage = (avg * 0.1259)/100
time = str(datetime.datetime.now().time())
f.write("%.2f," % (voltage) + time + "\r\n")
readings.clear()
label.config(text=str('Voltage: {0:.2f}'.format(voltage)))
label.after(1000, getvoltage)
getvoltage()
def animate(i):
pullData = open("VoltageReadings.txt","r").read()
dataList = pullData.split('\n')
xList=[]
yList=[]
for eachLine in dataList:
if len(eachLine) > 1:
y, x = eachLine.split(',')
xList.append(float(x)))
yList.append(float(y))
a.clear()
a.plot(xList,yList)
这是我尝试过的最新方法之一,但出现错误提示
ValueError: could not convert string to float: '17:21:55'
我已经尝试找到将字符串转换为浮点数的方法,但我似乎做不到
非常感谢您的帮助和指导,谢谢:)
【问题讨论】:
-
如果你的意思是“实时图形”是一个类似示波器的显示,恕我直言 matplotlib 不是完美的工具,因为它是为可发布的美丽图而设计的。看看 PyQtGraph (pyqtgraph.org) - 它的开发正是考虑到这种应用程序
-
实时图表应该显示电池电压读数以及时间,以分析一段时间内的电池健康状况
-
隐式类型转换 float(x) 仅适用于字符串,它只包含一个作为数字可解释的字符串。只要里面有其他东西(例如':'),它就会失败。你已经导入了
datetime,所以试试例如datetime.datetime.strptime(x, '%H:%M:%S')
标签: python python-3.x matplotlib tkinter