Matplotlib注释不起作用

时间:2014-08-19 09:54:55

标签: python matplotlib

我之前没有使用过matplotlib-我已经下载了libary并阅读了文档。我试图使用下面的代码在栏顶部显示值。但是,该值不显示

import numpy as np
import matplotlib.pyplot as plt
data = [ ("data1", 34), ("data5", 22),
        ("data12", 11), ( "data8", 28),
        ("data53", 57), ( "data11", 39),
        ("data12", 23), ( "data15", 98)]
N = len(data)
x = np.arange(1,N+1)
y = [ num for (s, num) in data ]
labels = [ s for (s, num) in data ]
width = 1
bar1 = plt.bar( x, y, width, color="y" )
plt.ylabel( 'Intensity' )
plt.xticks(x + width/2.0, labels )

for x, y in zip(x, y):
    plt.annotate("%i" % y, (x, y + 200), ha= 'center')

plt.show()

非常感谢任何帮助

1 个答案:

答案 0 :(得分:2)

您的问题很简单,因为您向y位置添加了200,所以注释的位置方式高于当前的y轴限制。

import numpy as np
import matplotlib.pyplot as plt
data = [ ("data1", 34), ("data5", 22),
        ("data12", 11), ( "data8", 28),
        ("data53", 57), ( "data11", 39),
        ("data12", 23), ( "data15", 98)]
N = len(data)
x = np.arange(1,N+1)
y = [ num for (s, num) in data ]
labels = [ s for (s, num) in data ]
width = 1
bar1 = plt.bar( x, y, width, color="y" )
plt.ylabel( 'Intensity' )
plt.xticks(x + width/2.0, labels )

y_shift = 5
x_shift = width/2.0
for x, y in zip(x, y):
    plt.annotate("%i" % y, (x + x_shift, y + y_shift), ha= 'center')

plt.ylim(0,110)

plt.show()

只需将垂直偏移更改为更合理的数字(上面选择为y_shift = 5)即可修复高度问题,但您还需要将width/2.0添加到x位置以获取文本酒吧的中心(假设你想要的是什么)。我还在最后添加了plt.ylim(0,110)来稍微改变y限制以显示最大条形码的数量。

Example plot