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

如何在Matplotlib中设置柱状图X轴位置以支持动画移动

手动设置Matplotlib柱状图X轴位置实现自定义布局

以下是可正常运行的柱状图生成代码:

# 创建数据集
data = {'C':20, 'C++':15, 'Java':30,
        'Python':35}
courses = list(data.keys())
values = list(data.values())
  
fig = plt.figure(figsize = (10, 5))
 
# 绘制柱状图
plt.bar(courses, values, color ='maroon',
        width = 0.4)
 
plt.xlabel("开设的课程")
plt.ylabel("选课学生数")
plt.title("不同课程的选课学生统计")
plt.show()

原始效果:
原始柱状图效果

需求:需要手动设置每个柱状图在X轴上的位置,以便后续制作左右移动的动画,如何实现?期望效果如下:
自定义位置的柱状图效果


解决方案

要手动控制柱状图的X轴位置,核心是放弃用字符串作为X轴输入,改用数值型坐标定义柱子位置,之后再替换X轴标签即可。具体实现步骤:

  • 自定义每个柱子的X轴数值位置(可按需调整间距)
  • 调用plt.bar()时传入这些数值作为X轴参数
  • 使用plt.xticks()将数值位置替换为对应的课程名称

修改后的代码示例:

import matplotlib.pyplot as plt

# 创建数据集
data = {'C':20, 'C++':15, 'Java':30, 'Python':35}
courses = list(data.keys())
values = list(data.values())

# 自定义每个柱子的X轴位置(可任意调整数值改变间距)
x_positions = [1, 3, 5, 7]
bar_width = 0.4

fig = plt.figure(figsize=(10, 5))

# 基于自定义位置绘制柱状图
plt.bar(x_positions, values, color='maroon', width=bar_width)

# 将X轴数值位置替换为课程名称
plt.xticks(x_positions, courses)

plt.xlabel("开设的课程")
plt.ylabel("选课学生数")
plt.title("不同课程的选课学生统计")
plt.show()

关键说明

  • x_positions的数值可以自由调整,比如设置为[0.5, 2, 4, 6.5]就能实现你期望的非均匀间距效果
  • 后续制作动画时,只需动态修改x_positions中的数值,重新绘制柱状图并更新画布,即可实现柱子左右移动的动画效果

内容的提问来源于stack exchange,提问作者Igor K.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 05:37:06