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()
如果任何人有任何想法,我会很感激,感谢
你能告诉我们什么是CSV?检查y [0]和x [0],len(x),len(y)并告诉我们你得到了什么。同时上传您的CSV并链接到它,以便我们可以重现。 – kabanus
或者更好的打印'x.shape','y.shape','x.dtype','y.dtype'。 – hpaulj