2016-11-15 74 views
0

我目前正在試圖繪製一個圖,我不得不找到一種方法將x值映射到正確的位置,而我的文件只包含1列,這是y值。如何將列表和數組轉換爲相同的維度?

我知道插值函數爲x值創建了一個數組,所以我認爲我需要將y值的列表放到一個數組中,但也許這是你們知道的另一種方式。

我目前的嘗試不斷給我「ValueError:x和y必須有相同的第一維」錯誤,所以我必須做錯了什麼。

這裏是我到目前爲止有:

import matplotlib.pyplot as plt 
import numpy as np 
import csv 
from scipy.interpolate import interp1d 

x1=[] 
y1=[] 

#xvalues run from .5 to 35, I have 2048 data points 
m=interp1d([1,2048], [.5,35]) 
for i in range(1,2048): 
    x1.append(m(i)) 
x=np.asarray(x1) 

with open('FFT','r') as csvfile: 
    plots = csv.reader(csvfile, delimiter =',') 
    for row in plots: 
     y1.append(float(row[0])) 
y=np.asarray(y1) 

plt.plot(x,y,label='Loaded from file') 
plt.xlabel('X') 
plt.ylabel('Y') 
plt.title('Title\nSubtitle') 
plt.legend(loc='best') 
plt.show() 

如果任何人有任何想法,我會很感激,感謝

+1

你能告訴我們什麼是CSV?檢查y [0]和x [0],len(x),len(y)並告訴我們你得到了什麼。同時上傳您的CSV並鏈接到它,以便我們可以重現。 – kabanus

+0

或者更好的打印'x.shape','y.shape','x.dtype','y.dtype'。 – hpaulj

回答

0
for i in range(1,2048): 
    x1.append(m(i)) 
x=np.asarray(x1) 

由於Python從該生成號碼的方式range應讀取的功能,

for i in range(1,2049): 
    x1.append(m(i)) 
x=np.asarray(x1) 

否則它會錯過最後一個元素在m()

相關問題