如何用Matplotlib正确绘制含浮点数的柱状图?数值显示异常排查
解决Matplotlib柱状图数值显示异常的问题
问题根源
你遇到的问题主要来自两个方面:
- 数据未正确绑定:代码里用
ripley_product_price1和paris_product_price1填充students列表,但你实际要使用的是1000000和1050000,如果这两个变量没被正确赋值,会导致图表数据错误。 - 默认科学计数法干扰:Matplotlib对大数值会自动启用科学计数法(比如把1000000显示为1e6),这容易让你误以为数值显示错误。
修复代码
直接使用目标浮点数,并关闭科学计数法显示:
import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_axes([0, 0, 1, 1]) langs = ['ripley', 'paris'] # 直接赋值你需要的两个浮点数 students = [1000000.0, 1050000.0] ax.bar(langs, students) # 强制Y轴以普通数字格式显示,关闭科学计数法 ax.ticklabel_format(style='plain', axis='y') # 可选:在柱子顶部添加具体数值标签,更直观 for idx, val in enumerate(students): ax.text(idx, val, str(val), ha='center', va='bottom') plt.show()
效果说明
- 修复后Y轴会显示完整的
1000000和1050000数值,不再用科学计数法。 - 若添加了顶部数值标签,能直接看到每个柱子的准确数值,彻底消除显示误解。
内容的提问来源于stack exchange,提问作者MATIAS IGNACIO OLIVA ALCAYAGA
相关产品推荐
相关产品推荐

