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のドキュメントを読みましたが、それでも助けにはなりません。また、バーチャートに読んだ日付を追加して、次のようにします。
誰か助けてくれませんか?
ヒストグラムについて話していますが、これはあまり意味がありません。ヒストグラムと棒グラフは別のものです。ヒストグラムは、たとえば、年間の値の合計を表す棒グラフになります。ここでは、あなたはバーを追いかけているようです。
以下に、各日付で必要な値ごとのバーを示すデータの完全な例を示します。
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軸を設定する必要があります( this answer を参照)。
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)
このコードは、あなたが探していることをします。 here および here で見つかった例に基づいています。
autofmt_xdate()
呼び出しは、x軸ラベルを読み取り可能にするのに特に役立ちます。
import numpy as np
from matplotlib import pyplot as plt
fig = plt.figure()
width = .35
ind = np.arange(len(OY))
plt.bar(ind, OY, width=width)
plt.xticks(ind + width / 2, OX)
fig.autofmt_xdate()
plt.savefig("figure.pdf")
まず、探しているのはcolumnまたはbar diagram、実際にはヒストグラムではありません。ヒストグラムは、ビンに分けられた連続変数の度数分布から作成されます。ここには、別々のラベルに対する列があります。
Matplotlibで棒グラフを作成するには、matplotlib.pyplot.bar()
メソッドを使用します。 このページ で例をよく説明しているmatplotlibのドキュメントと ソースコード をご覧ください。
可能であれば、このような単純なタスクの場合は、より良いコードを書くことを避けることができればいいと思います。スプレッドシートプログラムをお持ちの場合は、まさにそれが目的であり、「車輪を再発明する」必要がないため、これは簡単なことです。以下は、Excelでのデータのプロットです。
質問からデータをコピーし、テキストインポートウィザードを使用して2つの列に配置し、列図を挿入しました。