2016-08-10 15 views
3

私はmathplotlibでpythonを使ってヒストグラムをプロットしようとしています。 私は2つのデータセットを持っています。基本的には、csvファイルからインポートされた、Pythonのリストとしての男女のサンプルの高さです。matplotlibを使用して値リストからヒストグラムを生成するにはどうすればよいですか?

私が使用しているコード:

import csv 
import numpy as np 
from matplotlib import pyplot as plt 
men=[] 
women=[] 

with open('women.csv','r') as f: 
    r1=csv.reader(f, delimiter=',') 
    for row in r1: 
     women+=[row[0]] 

with open('men.csv','r') as f: 
    r2=csv.reader(f, delimiter=',') 
    for row in r2: 
     men+=[row[0]] 


fig = plt.figure() 
ax = fig.add_subplot(111) 

numBins = 20 
ax.hist(men,numBins,color='blue',alpha=0.8) 
ax.hist(women,numBins,color='red',alpha=0.8) 
plt.show() 

と私は取得エラー:

Traceback (most recent call last): 
    File "//MEME/Users/Meme/Miniconda3/Lib/idlelib/test.py", line 22, in <module> 
    ax.hist(men,numBins,color='blue',alpha=0.8) 
    File "\\MEME\Users\Meme\Miniconda3\lib\site-packages\matplotlib\__init__.py", line 1811, in inner 
    return func(ax, *args, **kwargs) 
    File "\\MEME\Users\Meme\Miniconda3\lib\site-packages\matplotlib\axes\_axes.py", line 5983, in hist 
    raise ValueError("color kwarg must have one color per dataset") 
ValueError: color kwarg must have one color per dataset 
+1

ここにチュートリアルです:https://plot.ly/matplotlib/histograms/ –

+0

私はそのコードを使用して同じエラーが発生します。 この問題はデータセットのインポート方法と関係していると思いますか? –

答えて

1

注:お使いのファイルが複数の行(カンマ区切り)との最初のエントリが含まれていると仮定各行は高さです。

womenmenのリストに「データ」を追加するとバグが発生します。 row[0]は実際には文字列です。したがって、matplotlibは混乱します。私はあなた(のpython 2)をプロットする前にこのコードを実行するお勧め:

import csv 
import numpy as np 
from matplotlib import pyplot as plt 
men=[] 
women=[] 
import pdb; 
with open('women.csv','r') as f: 
    r1=csv.reader(f, delimiter=',') 
    for row in r1: 
     women+=[(row[0])] 

with open('men.csv','r') as f: 
    r2=csv.reader(f, delimiter=',') 
    for row in r2: 
     men+=[(row[0])] 


fig = plt.figure() 
ax = fig.add_subplot(111) 
print men 
print women 
#numBins = 20 
#ax.hist(men,numBins,color='blue',alpha=0.8) 
#ax.hist(women,numBins,color='red',alpha=0.8) 
#plt.show() 

サンプル出力は

['1','3','3'] 
['2','3','1'] 

だからループで、あなただけの、例えばフロートや整数に文字列からの変換を行いますwomen += [float(row[0])]men += [float(row[0])]

+0

ああ、それは今完璧に動作します! クイックヘルプありがとう! –

+0

助けてもらえますか?あなたは私の答えをそれに隣のチェックマークを付けて受け入れてください。ありがとう。ハッピーコーディング – TuanDT

関連する問題