使用matplotlib按csv文件的列绘制行

时间:2015-07-30 21:18:41

标签: python file csv matplotlib plot

非常新的Python,第一次使用matplotlib

我正在尝试根据CSV文件的行绘制多线图。

CSV文件如下所示:

Row1        S1      S2     S3      HWS
Row2        2.45    3.76   2.44    1
Row3        3.59    2.56   9.68    2
Row4        2.54    9.45   6.78    3

我想按照csv文件中的每一行绘制HWS值。

Ex:对于Row2,我希望我的分数为(1,2.45),(2,3.66)和(3,2.44)。 对于Row3,我希望我的分数为(1,3.59),(2,2.56)和(3,9.68)。

我已经从其他堆栈溢出答案中查看了像pandas这样的模块,但我找不到按行绘制的命令。我找到的只是绘制整个CSV文件图表的方法或隔离csv文件列的方法。

有没有办法使用Python和matplotlib以这种方式绘制图形?

2 个答案:

答案 0 :(得分:2)

将csv中的每一列读入单独的列表中。

绘制数据是微不足道的。以下是代码中的基本示例,数据集来自csv。

import matplotlib.pyplot as plt

s1 = [2,3,2]
s2 = [3,2,9]
s3 = [2,9,6]
hws = [1,2,3]

plt.plot(hws,s1)
plt.plot(hws,s2)
plt.plot(hws,s3)

答案 1 :(得分:1)

如果你有一个庞大的数据集,试试这个。!

import csv
import matplotlib.pyplot as plt
import os

os.chdir(r"C:\--")  #path of your csv file

S1=[]
S2=[]
S3=[]
HWS=[]
with open('dataSet.csv','r') as csvFile:
    reader=csv.reader(csvFile,delimiter=';')
    next(reader)
    for row in reader:
        temp=row[0]
        S1.append(temp)
        temp=row[1]
        S2.append(temp)
        temp=row[2]
        S3.append(temp)
        temp=row[3]
        HWS.append(temp)
plt.plot(HWS,S1)
plt.plot(HWS,S2)
plt.plot(HWS,S3)
plt.show()