1

我有一个包含 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 = [row[0] for row in data]

所有列的此代码一一对应。我实际上想要有一些方法,以便它可以绘制所有 19 列,将第一列作为 x 轴常数并将它们绘制在一个窗口中。请提供任何帮助。

4

3 回答 3

3

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

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

您可以像这样绘制列bc

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 轴。有关详细信息,请参阅绘图文档。

于 2013-06-13T11:04:21.523 回答
1

这个怎么样:

[plt.plot(data[0],data[x]) for x in range(1,len(data[:,0]))]
于 2013-06-13T11:11:59.677 回答
0

正如 Matti John 所说,Pandas 是前进的方向,您可以更轻松地完成您所要求的事情。假设您的 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

这是上面代码的输出

于 2017-06-29T12:46:12.793 回答