繁体   English   中英

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

[英]Python updating histogram with random generate integers

我是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()

在此处输入图片说明

  1. 您需要通过选项bins=np.linspace(0, 10, 11)修复垃圾箱,该选项将使用等距整数垃圾箱。
  2. 一个plt.hist命令就足够了。 您可以使用NumPy的直方图命令更新现有图形。

我测试了以下内容:

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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM