【问题标题】:plot data from CSV file with matplotlib使用 matplotlib 从 CSV 文件中绘制数据
【发布时间】:2012-11-12 18:44:47
【问题描述】:

我在 e:\dir1\datafile.csv 有一个 CSV 文件。 它包含三列和 10 个标题和尾随行,需要跳过。 我想用 numpy.loadtxt() 来绘制它,我还没有找到任何严格的文档。

这是我从网上找到的几次尝试开始写的。

import matplotlib as mpl
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cbook as cbook

def read_datafile(file_name):
    # the skiprows keyword is for heading, but I don't know if trailing lines
    # can be specified
    data = np.loadtxt(file_name, delimiter=',', skiprows=10)
    return data

data = read_datafile('e:\dir1\datafile.csv')

x = ???
y = ???

fig = plt.figure()

ax1 = fig.add_subplot(111)

ax1.set_title("Mains power stability")    
ax1.set_xlabel('time')
ax1.set_ylabel('Mains voltage')

ax1.plot(x,y, c='r', label='the data')

leg = ax1.legend()

plt.show()

【问题讨论】:

标签: python numpy matplotlib


【解决方案1】:

根据docsnumpy.loadtxt

简单格式文件的快速阅读器。 genfromtxt 函数提供了更复杂的处理,例如缺失值的行。

所以只有几个选项可以处理更复杂的文件。 如前所述,numpy.genfromtxt 有更多选择。所以作为一个例子,你可以使用

import numpy as np
data = np.genfromtxt('e:\dir1\datafile.csv', delimiter=',', skip_header=10,
                     skip_footer=10, names=['x', 'y', 'z'])

读取数据并为列分配名称(或使用names=True 从文件中读取标题行),然后绘制它

ax1.plot(data['x'], data['y'], color='r', label='the data')

我认为 numpy 现在有很好的文档记录。您可以轻松地从 ipython 中检查文档字符串,或者如果您更喜欢以 HTML 格式阅读它们,也可以使用像 spider 这样的 IDE。

【讨论】:

  • 感谢您的信息。我下载了numpy ref。手动的;它包含我需要的关于 genfromtxt 的所有信息。
  • 很高兴听到。在 Stackoverflow 上,如果答案对您有用(并可能留下评论),您通常会投票赞成和/或如果您的问题得到回答,则接受它。
【解决方案2】:

我猜

x= data[:,0]
y= data[:,1]

【讨论】:

  • 或者,或者,x, y = data[:,:2].T(或者甚至 x, y, third_column = data.T,如果 data 总是有 3 列)。
猜你喜欢
  • 2015-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多