matplotlib绘制所有列的csv文件

时间:2013-06-13 10:31:59

标签: python numpy matplotlib

我有一个包含20列的csv文件。现在我可以使用这个代码绘制第一列为x轴,其余为y轴。

import numpy as np
import matplotlib.pyplot as plt
data = np.genfromtxt('cs.csv',delimiter=',', dtype = float)

a = [row[0] for row in data]
b = [row[1] for row in data]
c = [row[2] for row in data]

fig = plt.figure()
ax = fig.add_subplot(111, axisbg = 'w')
ax.plot(a,b,'g',lw=1.3)
ax.plot(a,c,'r',lw=1.3)
plt.show()

问题在这里我必须使用

定义所有列
  

a = [数据行中的行[0]]

这个代码逐个列出所有列。我想要实际拥有一些方法,以便它可以绘制所有19列,将第一列作为x轴常数,并将它们绘制在一个窗口中。请帮忙。

3 个答案:

答案 0 :(得分:3)

您可以尝试使用pandas,它使用matplotlib进行绘图。例如,如果你有这样的CSV:

a,b,c
20,2,5
40,6,8
60,4,9

您可以绘制列b& c喜欢这样:

import pandas as pd

df = pd.DataFrame.from_csv('test.csv', parse_dates=False)
df.b.plot(color='g',lw=1.3)
df.c.plot(color='r',lw=1.3)

第一列用作索引&默认为x轴。 有关详细信息,请参阅plotting documentation

答案 1 :(得分:1)

这个怎么样:

[plt.plot(data[0],data[x]) for x in range(1,len(data[:,0]))]

答案 2 :(得分:0)

正如马蒂约翰所说,熊猫是前进的方向,你可以做得更轻松。假设您的CSV与他发布的CSV类似,您可以将所有列(第一列除外)映射到第一列,如下所示:

import pandas as pd
df = pd.read_csv('name_of_file.csv', index_col=0)
df.plot(x=df.index, y=df.columns)

使用Matti John提供的CSV,即

a,b,c
20,2,5
40,6,8
60,4,9

这是上面代码的输出