在Python中针对一组键和值进行绘图

2024-04-19 19:54:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从一个文件中读取数据,然后用这个文件建立一个字典。使用这个字典,我想绘制一个图,其中字典的键作为X图,字典的值作为标记值。但是,键值是字符串,我只需要标记它们。我尝试了下面的代码,它抛出了一个错误,指出键值是一个字符串。你知道吗

The data from the data.txt file reads as follows:
new:10,not new:30,10:40,a:5.0

from matplotlib import pyplot as plt
import numpy as np

fileopen=open("data.txt", "r")
for a in fileopen.readlines():
b= a.split(",")
fileopen.close()
newdict={}
for c in b:
 newdict.update({c.rstrip("\',\",").split(":")[0]:eval(c.rstrip("\',\",").split(":")[1])})


plt.figure(figsize=(8,6), dpi=80)
x=[i for i in newdict]
plt.xticks(np.linspace(0,4,1, endpoint=True))
y=[newdict[j] for j in newdict]
plt.plot(y, color="blue", linewidth=1.0, linestyle="-")
plt.show()

这就是我在控制台上看到的错误。你知道吗

File "C:\Users\Annakoppad\Anaconda2\lib\site-packages\numpy\core\numeric.py", line 474, in asarray
return array(a, dtype, copy=False, order=order)

ValueError: could not convert string to float: a

我不能再继续下去了,有人能在这方面帮忙吗?你知道吗

提前谢谢!!!你知道吗


Tags: 文件字符串infrom标记fordata字典
1条回答
网友
1楼 · 发布于 2024-04-19 19:54:34

如果这是真正的csv数据,请尝试使用csvcsv.DictReader也许能帮到你。理想情况下,不会在数据中混用键名,而是根据第一行的位置进行定义,行如下所示:

new,not new,10,a
10,30,40,5.0

如果您根本不想将密钥放入csv,可以定义一系列密钥名称:

keys=("new","not new",10,"a")

请记住,在使用csv(以及readlines)时,每个值都被读取为一个字符串,因此如果行包含不同的数据类型,则必须将各个键转换为int或float。你知道吗

参考:csvhttps://docs.python.org/3/library/csv.html?highlight=csv#csv.DictReader

相关问题 更多 >