import csv
import matplotlib.pyplot as plt
path="E:\Google Stock Market Data - google_stock_data.csv.csv"
file=open(path)
reader=csv.reader(file)
a=[]
b=[]
header=next(reader)
data=[]
for row in reader:
data.append(row[:])
a=row[1]
b=row[2]
plt.plot(a,b)
plt.show()
我使用上面的脚本尝试了CSV,但是当我尝试绘制它时,它显示以下错误:
File "C:\Users\user\Anaconda3\lib\site-packages\matplotlib\colors.py", line 204, in _to_rgba_no_colorcycle
raise ValueError("RGBA values should be within 0-1 range")
ValueError: RGBA values should be within 0-1 range
<matplotlib.figure.Figure at 0x1b5e93b5ba8>
这是什么意思以及如何解决?
答案 0 :(得分:0)
您没有为a
和b
创建列表,而您使用的元素不是数字。 CSV文件只是文本,即使该文本类似于"16.35"
。
您可以通过更改
来解决这两个问题a=row[1]
b=row[2]
到
a.append(float(row[1]))
b.append(float(row[2]))
要回答问题的第一部分,请查看plt.plot
的文档。您的输入参数都是字符串,因此您匹配的签名很可能是plot(y, 'r+')
。该错误告诉您,您所谓的颜色规范的某些特定部分是无意义的。通过花车会解决问题。
作为一个挑剔者,尝试使用with
块来执行文件I / O.即使发生错误,这也可以保证您的文件已关闭。不是file=open(...)
,而是
with open(path) as file:
reader = csv.reader(file)
a = b = []
header = next(reader)
data = []
for row in reader:
data.append(row)
a.append(float(row[1]))
b.append(float(row[2]))
plt.plot(a,b)
plt.show()
您可能会注意到我已将row[:]
更改为row
。如果没有在其他地方使用引用,则无需复制。
答案 1 :(得分:0)
你循环必须像:
for row in reader:
data.append(row[:])
a.append(row[1]) # to add element to list use append
b.append(row[2])
plt.plot(a,b)
plt.show()
您必须在填写列表a
和b
之后进行绘图。
我建议您像烛台一样用烛台绘制股票数据:https://stackoverflow.com/a/33068041/2666859