列表/故障图中的差异



我通过csv导入了一个列表,代码为

import csv
import numpy as np
import matplotlib.pyplot as plt
dates = []
with open('Data3.txt') as csvDataFile:
csvReader = csv.reader(csvDataFile,quoting=csv.QUOTE_NONNUMERIC)
for row in csvReader:
dates.append(row)
data=np.array(dates)
print(data[:,0], data[:,1])

打印它会导致以下两组

['0.13' '0.27' '0.4' ... '8737.6' '8737.73' '8737.87'] 
['0.022' '0.0205' '0.019' ... '7.1187' '6.7994' '7.2403']

尝试用绘制这是不可能的

plt.plot(data[:,0], data[:,1])
plt.show()

所以我用建立了另一个阵列

cplr=[0.01828922,  0.01972157,  0.02342053,  0.25928021,
0.26352547,  0.26883406]

这个我可以很容易地绘制

现在我想知道为什么在打印时,第一套有"数字左右",而第二套没有。如何使数据"可绘制"?

['0.13' '0.27' '0.4' ... '8737.6' '8737.73' '8737.87'] 
['0.022' '0.0205' '0.019' ... '7.1187' '6.7994' '7.2403']
[0.01828922, 0.01972157, 0.02342053, 0.25928021, 0.26352547, 0.26883406]

现在我想知道为什么在打印它时,第一组的数字周围有',而第二组没有。

返回类型为<class 'str'>,这就是为什么不能绘制数据的原因。它必须是数字类型,matplotlib才能绘制它。

如何使数据"可绘制"?

您必须将类型转换为数字类型,在本例中为<class 'float'>。您可以对每个元素进行迭代,或者更简单地,使用map函数并执行float()

根据Data3.txt的格式,您可以使用np.loadtxt,它可以从字符串转换为浮点值并返回numpy数组。

最新更新