并没有变成动态柱状排序图
时间: 2023-07-21 08:31:37 浏览: 65
非常抱歉,可能是我没有说明清楚。动态柱状排序图需要使用 `animation` 模块,而且在 `update` 函数中要实现排序的过程,每次更新前 `num` 个数的位置,从而实现动态排序的效果。以下是修改过的代码,希望可以帮助到您:
```python
import random
import matplotlib.pyplot as plt
import matplotlib.animation as animation
# 生成随机数
num_list = [random.randint(0, 1000) for i in range(272)]
# 创建画布和子图
fig, ax = plt.subplots()
# 绘制初始柱状图
rects = ax.bar(range(len(num_list)), num_list)
# 设置初始标题
ax.set_title('Sorting Animation')
# 定义更新函数
def update(num):
# 对前 num 个数进行排序
sorted_list = sorted(num_list[:num])
# 更新柱状图
for i, rect in enumerate(rects):
if i < num:
rect.set_height(sorted_list[i])
rect.set_color('red')
else:
rect.set_color('gray')
# 更新标题
ax.set_title('Sorting Animation (num={})'.format(num))
# 创建动画对象
ani = animation.FuncAnimation(fig, update, frames=len(num_list), interval=50, repeat=True)
# 展示动画
plt.show()
```
在这个程序中,我们首先使用 Python 的 `random` 模块生成了一个长度为 272 的随机数列表 `num_list`,然后创建了画布和子图。接下来,我们绘制了初始的柱状图,并设置了初始的标题。在 `update` 函数中,我们使用 Python 的 `sorted` 函数对前 `num` 个数进行排序,并更新了柱状图和标题。每次更新前 `num` 个数的位置,并将其颜色设置为红色,而其他数的颜色则设置为灰色。最后,我们使用 `animation.FuncAnimation` 函数创建了动画对象,并指定了更新函数、帧数、时间间隔和是否重复等参数。最后调用 `plt.show()` 展示动画即可。
阅读全文