SMN*_*LLY 2 python csv matplotlib python-2.7
我正在尝试关注youtube上的教程,现在在教程中他们使用matplotlib.pyplot绘制一些标准文本文件,我可以很容易地实现这一点,但是我现在尝试使用一些csvs执行同样的事情我有实际数据.
我正在使用的代码是导入matplotlib.pyplot作为plt import csv #import numpy as np
with open(r"Example RFI regression axis\Delta RFI.csv") as x, open(r"Example RFI regression axis\strikerate.csv") as y:
readx = csv.reader(x)
ready = csv.reader(y)
plt.plot(readx,ready)
plt.title ('Test graph')
plt.xlabel('x axis')
plt.ylabel('y axis')
plt.show()
Run Code Online (Sandbox Code Playgroud)
我收到的追溯很长
Traceback (most recent call last):
File "C:\V4 code snippets\matplotlib_test.py", line 11, in <module>
plt.plot(readx,ready)
File "C:\Python27\lib\site-packages\matplotlib\pyplot.py", line 2832, in plot
ret = ax.plot(*args, **kwargs)
File "C:\Python27\lib\site-packages\matplotlib\axes.py", line 3997, in plot
self.add_line(line)
File "C:\Python27\lib\site-packages\matplotlib\axes.py", line 1507, in add_line
self._update_line_limits(line)
File "C:\Python27\lib\site-packages\matplotlib\axes.py", line 1516, in _update_line_limits
path = line.get_path()
File "C:\Python27\lib\site-packages\matplotlib\lines.py", line 677, in get_path
self.recache()
File "C:\Python27\lib\site-packages\matplotlib\lines.py", line 401, in recache
x = np.asarray(xconv, np.float_)
File "C:\Python27\lib\site-packages\numpy\core\numeric.py", line 320, in asarray
return array(a, dtype, copy=False, order=order)
TypeError: float() argument must be a string or a number
Run Code Online (Sandbox Code Playgroud)
请告知我需要做什么,我意识到对于大多数经验丰富的程序员来说这可能很容易.亲切的问候SMNALLY
csv.reader()返回字符串(从技术上讲,.next()reader对象的方法返回字符串列表).如果不将它们转换为float或者int,您将无法使用plt.plot()它们.
为了省去转换的麻烦,我建议使用genfromtxt()from numpy.(http://docs.scipy.org/doc/numpy/reference/generated/numpy.genfromtxt.html)
例如,有两个文件:data1.csv:
data1
2
3
4
3
6
6
4
Run Code Online (Sandbox Code Playgroud)
和data2.csv:
data2
92
73
64
53
16
26
74
Run Code Online (Sandbox Code Playgroud)
它们都有一行标题.我们可以做的:
import numpy as np
data1=np.genfromtxt('data1.csv', skip_header=1) #suppose it is in the current working directory
data2=np.genfromtxt('data2.csv', skip_header=1)
plt.plot(data1, data2,'o-')
Run Code Online (Sandbox Code Playgroud)
结果:
