web-dev-qa-db-ja.com

matplotlibの棒グラフの列にテキストを表示するにはどうすればよいですか?

棒グラフがあり、各列にテキストを表示したいのですが、どうすればよいですか?

27
GiannisIordanou

私はこれがあなたを正しい方向に向けると信じています:

http://matplotlib.sourceforge.net/examples/pylab_examples/barchart_demo.html

あなたが最も興味を持っている部分は次のとおりです。

def autolabel(rects):
    for rect in rects:
        height = rect.get_height()
        plt.text(rect.get_x()+rect.get_width()/2., 1.05*height, '%d'%int(height),
                ha='center', va='bottom')

テキストの配置は、高さ関数または列の高さによって決定され、各列の上に配置される数値は、 '%d'%int(height)で記述されます。したがって、必要なのは、「name」と呼ばれる文字列の配列を作成することだけです。これは、列の上部に配置して繰り返し処理します。形式は、doubleではなく文字列(%s)用に変更してください。

def autolabel(rects):
# attach some text labels
    for ii,rect in enumerate(rects):
        height = rect.get_height()
        plt.text(rect.get_x()+rect.get_width()/2., 1.02*height, '%s'% (name[ii]),
                ha='center', va='bottom')
autolabel(rects1)

それで十分です!

38
cosmosis