入力 *.txt ファイルを使用して非常にシンプルな棒グラフ (Python、Matplotlib) をプロットする方法は? 質問する

入力 *.txt ファイルを使用して非常にシンプルな棒グラフ (Python、Matplotlib) をプロットする方法は? 質問する

私は 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)

おすすめ記事