【发布时间】:2018-06-24 14:33:02
【问题描述】:
在寻找我的previous question 的解决方案时(显然已经解决了),我遇到了另一个尚未解决的问题。我会非常感谢任何可以帮助我解决它的人!
有人认为我使用的是 matplotlib 1.5.1 的过时版本,但我现在已将其更新到 2.1.1 以及 numpy 到 1.14.0,这对我没有帮助,唉。
所以,再一次。我有一个 CSV 文件作为输入:
16,59,55,51 13.8
17,00,17,27 13.7
17,00,39,01 13.6
17,01,01,06 13.4
我在上面运行这个 python 脚本:
import matplotlib.pyplot as plt
import csv
from datetime import time
x = []
y = []
with open('calibrated.csv','r') as csvfile:
plots = csv.reader(csvfile, delimiter=' ')
for row in plots:
hours,minutes,seconds,milliseconds = [int(s) for s in row[0].split(",")]
x.append(time(hours,minutes,seconds,milliseconds))
y.append(float(row[1]))
plt.plot(x,y, marker='o', label='brightness')
plt.gca().invert_yaxis()
plt.xlabel('time [UT]')
plt.ylabel('brightness [mag, CR]')
plt.legend()
plt.grid()
plt.show()
我得到了这个 TypeError (而解决我之前问题的人没有它!):
Traceback (most recent call last):
File "lightcurve.py", line 16, in <module>
plt.plot(x,y, marker='o', label='brightness')
File "/usr/local/lib/python2.7/dist-packages/matplotlib/pyplot.py", line 3154, in plot
ret = ax.plot(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/matplotlib/__init__.py", line 1812, in inner
return func(ax, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/matplotlib/axes/_axes.py", line 1425, in plot
self.add_line(line)
File "/usr/local/lib/python2.7/dist-packages/matplotlib/axes/_base.py", line 1708, in add_line
self._update_line_limits(line)
File "/usr/local/lib/python2.7/dist-packages/matplotlib/axes/_base.py", line 1730, in _update_line_limits
path = line.get_path()
File "/usr/local/lib/python2.7/dist-packages/matplotlib/lines.py", line 925, in get_path
self.recache()
File "/usr/local/lib/python2.7/dist-packages/matplotlib/lines.py", line 612, in recache
x = np.asarray(xconv, np.float_)
File "/usr/local/lib/python2.7/dist-packages/numpy/core/numeric.py", line 531, in asarray
return array(a, dtype, copy=False, order=order)
TypeError: float() argument must be a string or a number
我被困在那里了。
【问题讨论】:
-
可以确认我没有看到这个错误...
-
如果你使用 matplotlib 和 numpy,然后跳转并使用 pandas。
-
嗯。你能显示
print(x[0])和print(type(x[0]))吗? -
问题中的代码对我来说也确实运行良好。我猜想,虽然每个人都在查看问题中的四行 csv 文件,但这实际上并不是您遇到问题的文件。所以首先尝试使用 4-line-file 并查看这是否会产生错误(我强烈怀疑它,因为其中没有任何内容,这会导致您得到错误)。然后找出实际文件中的哪些行产生错误并显示问题中的那些行的副本。
-
有趣的是@cᴏʟᴅsᴘᴇᴇᴅ 从一开始就建议使用 pandas 是完全正确的,只是以一种非常不同的方式。 ;-)
标签: python numpy matplotlib typeerror