如何绘制整个数据数组,而不仅仅是它的单个值?

时间:2017-06-29 15:55:14

标签: python

我试图在一个线图上绘制200个频率与dB数据点。我的代码首先有很多东西可以摆脱我的数据中的标题(18行),然后尝试将列(频率和dB)保存为数组并绘制它们,但python输出一个没有错误的空白图

python非常新,所以不知道该怎么做!提前谢谢!

这是我目前的代码:

import csv
import numpy as np
import matplotlib.pyplot as plt


def skip_first(seq,n):
    for i, item in enumerate(seq):
        if i>=n:
            yield item

frequency=[]
dB=[]
with open('2.csv','r') as s11_load:
    csvreader = csv.reader(s11_load)
    for row in skip_first(csvreader, 18):
       frequency = row[0]
       dB = row[1]
       print(frequency)
       #print(dB)

plt.plot(frequency,dB,linestyle='-',color='b')

plt.show()

3 个答案:

答案 0 :(得分:1)

您始终更新频率和dB列表而不是附加到

尝试更换:

frequency = row[0]
dB = row[1]

由:

frequency.append(row[0])
dB.append(row[1])

应该做的伎俩。快乐的编码。

答案 1 :(得分:0)

尝试使用Pandas包,它可以简化您的代码:

import pandas as pd
df = read_csv("path to file", skiprows = 18) #skip headers
df.plot(x = , y = ) #Plots graph using matplotlib

答案 2 :(得分:0)

您在每个循环中为frequencydB提供一个新值(浮点数)。因此,当您尝试绘制图表时,它们只是单个值。

您已将它们定义为列表,您只需append这些列表的值:

frequency=[]
dB=[]
with open('2.csv','r') as s11_load:
    csvreader = csv.reader(s11_load)
    for row in skip_first(csvreader, 18):
       frequency.append(row[0])
       dB.append(row[1])