如何从 matplotlib 的 AxesSubplot 对象获取 BarContainer 对象?

4

我对matplotlib还比较新,但据我所知:

fig,ax = plt.subplot()
ax.bar(x,y) 

bar = ax.bar(x,y)

返回一个BarContainer类型对象。我们可以通过bar.axes获取绘制此图表的轴ax。

但是,如果我们有一个轴ax,并且我们没有将条形图存储在bar对象中,现在我们继续对轴ax进行大量更改,例如 ax.position ax.legend等等。现在,我们有了一个AxesSubplot类型的对象ax...从这个对象中,我们如何提取我们的BarContainer类型对象呢?

我有一个接受可订阅的BarContainer对象的函数,但在处理结束时,我只有一个AxesSubplot类型的对象...我无法弄清楚如何从一个对象转换为另一个对象。我们可以从AxesSubplot对象中获取艺术家,标签,轴等等,但我看不到如何从中获取Container类型对象。请帮忙解决,谢谢!

2个回答

5
你可以使用 ax.containers 获取坐标轴中所有容器的列表。
fig, ax = plt.subplots()
ax.bar(x, y) 

con = ax.containers
print(con)
# [<BarContainer object of 3 artists>]

谢谢!这正是我在寻找的,文档中找不到。 - Kriticoder
1
@Kriticoder 我也在文档中找不到它的任何信息。但是,如果你执行 print(dir(ax)) 命令,它会告诉你轴对象的属性列表。这就是我发现 .containers 属性的方法! - DavidG
我使用了[f'ax.{fn}' for fn in dir(ax) if 'contain' in fn.lower()],这与...相似。 - Dave Babbitt

0
此外,您可以使用以下代码为您的条形图中的每个条形添加标签。大小部分是可选的。
fig, ax = plt.subplots()
ax.bar(x, y)
ax.bar_label(ax.containers[0], size=20)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,