使用matplotlib.pyplot从csv绘制数据

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

CT *_*Zhu 9

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)

结果:

在此输入图像描述

  • 不是正常的Stackoverflow礼仪但是..我想我爱你...非常感谢:) (2认同)