[英]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()
bins=np.linspace(0, 10, 11)
修复垃圾箱,该选项将使用等距整数垃圾箱。 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.