我正在尝试编写一个脚本,该脚本将从CSV中提取数据,然后使用.linecollection(类似于https://stackoverflow.com/a/21357666/4488288中所示的方法)在与数据对应的y值处创建线段
我能够从csv文件中创建列表,但是我得到了一个
"TypeError: float() argument must be a string or a number, not 'set'"
错误
我正在使用python 3.7.3
我是matplotlib的新手,已经很多年没有使用python了,所以任何帮助都会很好——我不需要这种特殊的方法,只需要输入csv文件和输出图表
(我正在尝试创建简单的核能水平图/格罗特里亚图-我遇到的任何解决方案都不能满足我的需要)
我尝试使用列表(map)(float和get
ValueError: setting an array element with a sequence.
从csv收集数据:
for row in csv_reader:
if line_count < 10:
angmom0.append({row[0]})
energy0.append({row[1]})
line_count += 1
尝试写入列表的内容(为了简化,我只尝试列表中的一个条目)
lines = [[(0, energy0[0]), (1,energy0[0])], [(2, 3), (3, 3)], [(1, 2), (1, 3)]]
c = np.array([(1, 0, 0, 1), (0, 1, 0, 1), (0, 0, 1, 1)])
预期的输出将是一个图表,类似于(https://i.stack.imgur.com/Srl6l.png).]1
我目前根本无法产生任何输出
编辑
花括号是问题所在!谢谢大家的帮助
当你写作时
您正在将带有
row[0]
的集合附加到angmom0
列表中。集合是python中的内置元素,是无序、唯一元素的集合。例如,{4,5,6,2}是一个集合。您可以通过编写花括号来创建它们,然后在花括号内创建一系列元素。在您的例子中,单个元素将是row[0]
我不知道您的CSV的确切格式,所以我不能确定,但是您可能只想执行
angmom0.append(row[0])
:)当从
csv
文件收集数据时,您正在使用{row[0]}
和{row[1]}
,这基本上创建了一个具有一个元素的set
。我不确定,但您可能希望像这样使用f strings
。您只需删除{}
并改为执行row[0]
,因为它无论如何都是一个字符串。我不确定这是否是问题所在,但我希望这会有所帮助相关问题 更多 >
编程相关推荐