2015-11-18 110 views
0

我完全被難倒爲什麼我得到這個錯誤。 任何幫助將不勝感激!如何擺脫顏色kwarg錯誤?

這是錯誤信息:

文件 「C:/Python27/Scripts/Lab08realdeal.py」,第23行,在 plt.hist(計數,範圍= 20,顏色= '紅色')

文件 「C:\ Python27 \ lib中\站點包\ matplotlib \ pyplot.py」,線2896,在HIST 堆疊=堆疊,** kwargs)

文件「C:\ Python27 \ lib中\ site-packages \ matplotlib \ axes_axes.py「,第5603行,代碼爲 raise ValueError(」color kwarg must have one color color per dataset「)

ValueError異常:彩色kwarg必須有每個數據集

import csv 
import matplotlib.pyplot as plt 

def loadContaminantFrequencies(contaminant, fileInfo): 
count= 0 
for line in fileInfo: 
    if contaminant == line[0]: 
     count = count+1 

return count 

ifile = open('air_samples.csv',"rb") 
fileInfo = csv.reader(ifile) 
count = ("Benzene", fileInfo) 
counts = [count,count] 


plt.hist(count,range=20,color = 'red') 
plt.xlabel("CountOfChemical") 
plt.ylabel("Frequency") 
plt.axes([0,3000,0,1]) 
plt.show() 

回答

0

hist()採取任一陣列或作爲參數陣列的序列中的一個顏色。如果它得到一個序列,它會嘗試繪製幾個直方圖,每個序列對應一個直方圖。您的第一個參數count是一個2元素的元組,它被識別爲2個獨立的數據集。因此hist()想要color kwarg也有2個元素,但它只能找到一個,因此是'red'錯誤。

我不知道你有什麼做的,但也許是正確的調用是

plt.hist(fileInfo,range=20,color = 'red') 

(因爲我無法想象人們會如何繪製字符串"Benzene"的直方圖)

編輯:我的答案假設fileInfo是直方圖能夠,它顯然不是(這就是爲什麼你應該總是試圖發佈自足的例子)。無論如何,這並不是說它在原始問題上的重要性,答案並不取決於它。

根據csv模塊的文檔,您需要首先提取數據。再次,因爲我沒有所有的信息,我會假設你的CSV文件中的數據已經很好走了(也就是說,有一列浮點數)。

fileInfo = csv.reader(ifile) 
count = numpy.array([float(row[0]) for row in fileInfo]) 

plt.hist(count,range=20,color = 'red') 

請嘗試自己解決任何以下問題,或者至少創建一個單獨的問題。

+0

我應該從一個.csv文件中讀取一系列化學物質以及它們的濃度和頻率值。一旦我收集了這個頻率信息,通過調用一個函數,苯,並使用該頻率數據繪製一個紅色的直方圖(20條)。 – Sid

+0

當我申請你已經證明了我的修正,我得到一個新的錯誤 文件「C:/Python27/Scripts/Lab08realdeal.py」 23行,在 plt.hist(的fileInfo,範圍= 20 ,顏色= '紅色') 文件 「C:\ Python27 \ lib中\站點包\ matplotlib \ pyplot.py」,線2896,在HIST 堆疊=堆疊,** kwargs) 文件「C :\ Python27 \ LIB \站點包\ matplotlib \軸\ _axes。如果isinstance(x,np.ndarray)或不可迭代(x [0]): TypeError:'_csv.reader'對象沒有屬性'__getitem__' – Sid