私は Python 2.7 と matplotlib を使用しています。 *.txt データ ファイルがあります:
0 14-11-2003
1 15-03-1999
12 04-12-2012
33 09-05-2007
44 16-08-1998
55 25-07-2001
76 31-12-2011
87 25-06-1993
118 16-02-1995
119 10-02-1981
145 03-05-2014
ファイルの最初の列 (数値) は棒グラフの Y 軸上に、ファイルの 2 番目の列 (日付) はヒストグラムの OX 軸上になければなりません。ファイルの読み方しかわかりません。
OX = []
OY = []
try :
with open('data.txt', 'r') as openedFile :
for line in openedFile :
tab = line.split()
OY.append(int(tab[0]))
OX.append(str(tab[1]))
except IOError :
print("IOError!")
matplotlibのドキュメントを読みましたが、それでも役に立ちません。また、棒グラフに日付を追加して、次のように表示したいです。
誰か助けてくれませんか?
ベストアンサー1
ヒストグラムについて話しているようですが、これはあまり意味がありません。ヒストグラムと棒グラフは別物です。たとえば、ヒストグラムは年ごとの値の合計を表す棒グラフです。ここでは、単に棒グラフを求めているようです。
以下は、各日付の各必須値のバーを表示するデータの完全な例です。
import pylab as pl
import datetime
data = """0 14-11-2003
1 15-03-1999
12 04-12-2012
33 09-05-2007
44 16-08-1998
55 25-07-2001
76 31-12-2011
87 25-06-1993
118 16-02-1995
119 10-02-1981
145 03-05-2014"""
values = []
dates = []
for line in data.split("\n"):
x, y = line.split()
values.append(int(x))
dates.append(datetime.datetime.strptime(y, "%d-%m-%Y").date())
fig = pl.figure()
ax = pl.subplot(111)
ax.bar(dates, values, width=100)
ax.xaxis_date()
日付を解析しstrptime
、x軸を日付を使用するように設定する必要があります(この答え)。
x 軸に線形時間スケールを表示するのではなく、ラベル付きのバーだけを表示したい場合は、代わりに次のようにします。
fig = pl.figure()
ax = pl.subplot(111)
ax.bar(range(len(dates)), values)
編集: 次のコメントに従って、すべての目盛りを中央に配置するには、範囲を次のように渡しますset_ticks
(バーの幅の半分だけ移動します)。
fig = pl.figure()
ax = pl.subplot(111)
width=0.8
ax.bar(range(len(dates)), values, width=width)
ax.set_xticks(np.arange(len(dates)) + width/2)
ax.set_xticklabels(dates, rotation=90)