matplot的情节没有显示图表

时间:2017-08-18 05:58:02

标签: python matplotlib

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>

这是什么意思以及如何解决?

2 个答案:

答案 0 :(得分:0)

您没有为ab创建列表,而您使用的元素不是数字。 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()

您必须在填写列表ab之后进行绘图。

我建议您像烛台一样用烛台绘制股票数据:https://stackoverflow.com/a/33068041/2666859