Python随机生成整数更新直方图

2024-04-18 15:51:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python新手,我想开发一个直方图来更新一个从0到10的20个随机整数的列表;但是直方图的条与x轴的值不匹配,只有10条。同时,也有一些其他的酒吧出现在背景中不断更新以外的蓝色酒吧。有什么问题吗?谢谢!你知道吗

import matplotlib 
matplotlib.use('TkAgg')
import random
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
stat_num =20
range_num=10
y_lim=10

def animate(frameno):
    x = [random.randint(0, range_num) for _ in range(stat_num)]
    n, bins, ignored = plt.hist(x,stat_num)
    axes = plt.gca()
    axes.set_ylim([0,y_lim])
    for rect, h in zip(patches, n):
        rect.set_height(h)
    return patches    


fig, ax = plt.subplots()
x = [random.randint(0, range_num) for _ in range(stat_num)]
print(x)
n, bins, patches = plt.hist(x,stat_num)
axes = plt.gca()
axes.set_ylim([0,y_lim])

ani = animation.FuncAnimation(fig, animate, blit=True, interval=100,
                          repeat=True)
plt.show()

enter image description here


Tags: inimportformatplotlibasrangepltrandom
1条回答
网友
1楼 · 发布于 2024-04-18 15:51:41
  1. 您需要通过选项bins=np.linspace(0, 10, 11)自行修复这些容器,该选项将使用等距整数容器。你知道吗
  2. 一个plt.hist命令就足够了。然后可以使用NumPy的histogram命令更新现有图形。你知道吗

我测试了以下内容:

import matplotlib 
matplotlib.use('TkAgg')
import random
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

stat_num =20
range_num=10
y_lim=10

fig, ax = plt.subplots()
x = [random.randint(0, range_num) for _ in range(stat_num)]

print(x)
n, bins, patches = plt.hist(x, bins=np.linspace(0, 10, 11))

def animate(frameno):
    x = [random.randint(0, range_num) for _ in range(stat_num)]
    n, bins = np.histogram(x, bins=np.linspace(0, 10, 11))
    for rect, h in zip(patches, n):
        rect.set_height(h)
    return patches

axes = plt.gca()

axes.set_ylim([0,y_lim])

ani = animation.FuncAnimation(fig, animate, blit=True, interval=100,
                              repeat=True)

plt.show()

相关问题 更多 >