You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matplotlib柱状图中b.get_x()返回的X轴数值计算逻辑解析

关于Matplotlib柱状图中b.get_x()数值的计算逻辑

代码示例

import matplotlib.pyplot as plt

products = ['mouse','keyboard','antivirus','scanner','pendrive','battery','mobile']
price = [500, 1200, 550, 4500, 3500, 1500, 2500]
plt.title('Scene-1')
q = plt.bar(products, price)

for b in q:
    val = b.get_height()
    plt.text(b.get_x() + b.get_width()/2, val, round(val, 2), ha= 'center', va= 'bottom')
    print(b)
    print('b.get_x()', '\n', b.get_x())

plt.show()

问题

b.get_x()返回的如-0.4、0.6、1.6、2.6、3.6、4.6、5.6这类X轴数值是如何计算的?这些数值与图表中条形在X轴上的位置有什么关联?

解答

  1. 分类X轴的坐标映射
    Matplotlib处理字符串类型的分类X轴时,会自动把每个分类映射成连续的整数坐标:第一个分类mouse对应0,第二个keyboard对应1,直到最后一个mobile对应6。

  2. b.get_x()的计算逻辑
    柱状图默认的条形宽度是0.8(可通过plt.bar(width=...)修改),b.get_x()返回的是每个条形左边缘的X坐标,计算公式为:
    对应分类的整数坐标 - 条形宽度/2
    比如:

  • mouse对应的整数坐标是0,左边缘坐标为 0 - 0.8/2 = -0.4
  • keyboard对应的整数坐标是1,左边缘坐标为 1 - 0.8/2 = 0.6
  • 后续分类依次类推,得到1.6、2.6等数值。
  1. 与条形位置的关联
    这些数值直接对应条形在X轴上的实际位置:
  • b.get_x()是条形左边缘的坐标
  • b.get_x() + b.get_width()是条形右边缘的坐标
  • 两者的中点b.get_x() + b.get_width()/2正好等于分类对应的整数坐标(0、1、2...6),也就是条形的中心位置,这也是你代码中用来放置数值标签的位置,确保标签居中显示在条形上方。

内容的提问来源于stack exchange,提问作者Zaman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 14:12:38