2016-07-28 2 views
3

私は、matplotlibとpyplotを使ってCSVファイルからグラフを作成しています。私は折れ線グラフを作成することはできますが、棒グラフを作成するのに苦労しています。データテーブルを使って棒グラフを作成する

私はこのポストをmatplotlib bar chart with datesと言いましたが、私の仕事を簡単に達成しなければならないようないくつかのものがありましたが、私のdatetimesのリストではうまく動作しません。

import matplotlib.pyplot as plt 
import matplotlib 
import numpy as np 
from datetime import datetime 
import csv 


columns="YEAR,MONTH,DAY,HOUR,PREC,PET,Q,UZTWC,UZFWC,LZTWC,LZFPC,LZFSC,ADIMC,AET" 

data_file="FFANA_000.csv" 

list_of_datetimes = [] 
skipped_header = False 
with open(data_file, 'rt') as f: 
    reader = csv.reader(f, delimiter=',', quoting=csv.QUOTE_NONE) 
    for row in reader: 
     if skipped_header: 
      date_string = "%s/%s/%s %s" % (row[0].strip(), row[1].strip(), row[2].strip(), row[3].strip()) 
      dt = datetime.strptime(date_string, "%Y/%m/%d %H") 
      list_of_datetimes.append(dt) 
     skipped_header = True   


UZTWC = np.genfromtxt(data_file, delimiter=',', names=columns, usecols=("UZTWC")) 

x = list_of_datetimes 
y = UZTWC 

ax = plt.subplot(111) 
ax.bar(x, y, width=10) 
ax.xaxis_date() 

plt.show() 

これはエラーになります実行:

上記のポストからの正確なコードが予想されるグラフを生成し実行しているが、私は私のCSVファイルから私自身のために私達のそのxとyの値を交換するとき

Traceback (most recent call last): 
File "graph.py", line 151, in <module> 
ax.bar(x, y, width=10) 
File "C:\Users\rbanks\AppData\Local\Programs\Python\Python35-32\lib\site-packages\matplotlib\__init__.py", line 1812, in inner 
return func(ax, *args, **kwargs) 
File "C:\Users\rbanks\AppData\Local\Programs\Python\Python35-32\lib\site-packages\matplotlib\axes\_axes.py", line 2118, in bar 
if h < 0: 
TypeError: unorderable types: numpy.ndarray() < int() 

私は私の線グラフをプロットするために必要な日時numpyの変換を実行します。

list_of_datetimes = matplotlib.dates.date2num(list_of_datetimes) 

同じエラーが発生します。

誰かが洞察力を提供できますか? FFANA_000.csvから

抜粋:

%YEAR,MO,DAY,HR,PREC(MM/DT),ET(MM/DT),Q(CMS), UZTWC(MM),UZFWC(MM),LZTWC(MM),LZFPC(MM),LZFSC(MM),ADIMC(MM), ET(MM/DT) 
2012, 5, 1, 0,  0.000,  1.250,  0.003,  2.928,  0.000,  3.335,  4.806,  0.000,  6.669,  1.042 
2012, 5, 1, 6,  0.000,  1.250,  0.003,  2.449,  0.000,  3.156,  4.798,  0.000,  6.312,  0.987 
2012, 5, 1, 12,  0.000,  1.250,  0.003,  2.048,  0.000,  2.970,  4.789,  0.000,  5.940,  0.929 
2012, 5, 1, 18,  0.000,  1.250,  0.003,  1.713,  0.000,  2.782,  4.781,  0.000,  5.564,  0.869 
2012, 5, 2, 0,  0.000,  1.250,  0.003,  1.433,  0.000,  2.596,  4.772,  0.000,  5.192,  0.809 
2012, 5, 2, 6,  0.000,  1.250,  0.003,  1.199,  0.000,  2.414,  4.764,  0.000,  4.829,  0.750 
2012, 5, 2, 12,  0.000,  1.250,  0.003,  1.003,  0.000,  2.239,  4.756,  0.000,  4.478,  0.693 
2012, 5, 2, 18,  0.000,  1.250,  0.003,  0.839,  0.000,  2.072,  4.747,  0.000,  4.144,  0.638 
2012, 5, 3, 0,  0.000,  1.250,  0.003,  0.702,  
+0

ファイルからいくつかの例文行を与えることはできますか? –

+1

@MaximilianPeters編集された元の質問 –

答えて

0

私は完全にあなたのデータとコードを使用して問題を再現することができませんでした。私は

> UZTWC = np.genfromtxt(data_file, delimiter=';', names=columns, 
> usecols=("UZTWC")) File 
> "C:\Python34-64bit\lib\site-packages\numpy\lib\npyio.py", line 1870, 
> in genfromtxt 
>  output = np.array(data, dtype) ValueError: could not convert string to float: b'UZTWC(MM)' 

を得る。しかしUZTWC = np.genfromtxt(...)

UZTWC = np.genfromtxt(data_file, delimiter=',', usecols=(7), skip_header=1) 

にを変更してみてください、あなたはグラフを取得する必要があります。問題は、何らかの理由であなたの気味な配列が文字列であり、浮動小数点ではないということです。

関連する問題