Matplotlib注释不起作用

2024-04-29 08:38:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我以前没有使用过matplotlib—我已经下载了库并阅读了文档。我试图用下面的代码在条形图的顶部显示值。但是,该值不会显示

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()

非常感谢任何帮助


Tags: 代码in文档importfordatalabelsmatplotlib
1条回答
网友
1楼 · 发布于 2024-04-29 08:38:33

您的问题很简单,注释的位置比当前的y轴限制高出方式,这是因为在y轴位置上增加了200个。在

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)就可以解决高度问题,但是您还需要在x位置添加width/2.0以获得条中心的文本(假设这是您想要的)。我还在末尾添加了plt.ylim(0,110)以稍微移动y限制,以显示最大条的数字。在

Example plot

相关问题 更多 >