我正在尝试使用文本文件中的日期和整数绘制图形,如下所示:
但是我一直收到此错误
追踪(最近的呼叫最后):
文件“C:\ Users \ Haeshan \ Desktop \ Comp Sci CC \ graph.py”,第21行,in 曲线图()
文件“C:\ Users \ Haeshan \ Desktop \ Comp Sci CC \ graph.py”,第9行,图中 converters = {1:mdates.strpdate2num(“%d /%m /%Y”)})
文件“C:\ Users \ Haeshan \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ site-packages \ numpy \ lib \ npyio.py”,第930行,在loadtxt中 items = [conv(val)for(conv,val)in zip(converter,vals)] 文件“C:\ Users \ Haeshan \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ site-packages \ numpy \ lib \ npyio.py”,第930行,中
items = [conv(val)for(conv,val)in zip(converter,vals)]
文件“C:\ Users \ Haeshan \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ site-packages \ numpy \ lib \ npyio.py”,第659行,在floatconv中 return float(x)
ValueError:无法将字符串转换为float:b“['10'”
import matplotlib.pyplot as plt
import numpy as np
import csv
import matplotlib.dates as mdates
def graph():
date, value = np.loadtxt("Scores.txt", delimiter = ",", unpack=True,
converters = {1: mdates.strpdate2num("%d/%m/%Y")})
fig = plt.figure()
ax1 = fig.add_subplot(1,1,1, axisbg ="white")
plt.plot_date(x=date, y=value)
plt.title("Performace")
plt.ylabel("Score")
plt.xlabel("Date")
graph()
任何想法, 非常感谢
答案 0 :(得分:0)
问题是你的第一列有引号。既然您无论如何定义转换器,我会将其更改为
converters = {0: (lambda x: int(x)),1: mdates.strpdate2num("%d/%m/%Y")})
<强>更新强>
抱歉,由于引号我没有看到其他问题。 TBH,在这种情况下我不会使用np.loadtxt
,因为每行中都有方括号。此外,您遇到的问题是您使用的是Python 3,其中字符串是unicode而不是字节,但loadtxt
用于字节(因此行前面的b
)。
我的建议是逐行阅读并解析每一行,例如
dates,values = list(),list()
formater = mdates.strpdate2num("%d/%m/%Y")
with open("Scores.txt",'r',newline='\n') as input_file:
for line in input_file:
# Remove the square brackets, quotation marks and newlines (if necessary)
# Be aware that this will also kill all square brackets and quotations marks in your line
entries = line.replace('[','').replace(']','').replace("'",'').replace('\n','').split(',')
values.append(int(entries[0]))
dates.append(formater(entries[1]))