2013-06-13 50 views
1

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

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 = [row[0] for row in data]

此代码对所有列逐个定义所有列。我希望实际上有一些方法,以便它可以绘制所有19列,将第一列作为x轴常量并将它们绘制在单个窗口中。请任何帮助。

回答

2

如何:

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

嗨,你能请告诉什么是一个范围内的看台(1,LEN(A [:0]))] – user2095624

+0

嗨,错字我的一部分。它应该是'数据'。现在更新。 – atomh33ls

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

+0

我有熊猫的问题。 AttributeError:'模块'对象没有'DataFrame'属性。是由于安装或不同的版本。请任何想法。 – user2095624

+0

据我所知,DataFrame一直是大熊猫的一部分。你用pip安装了吗? –

0

正如马蒂·约翰说,大熊猫是前进的方向,你可以做你问更容易。假设您的CSV是一个类似的形式向一个他贴了,你可以绘制所有列(除了第一个)针对这样的第一列:

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

使用CSV是马蒂·约翰给,即

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

这是从代码输出上述