gpt4 book ai didi

python - matplotlib 动画绘图散点图

转载 作者:行者123 更新时间:2023-12-01 09:27:17 25 4
gpt4 key购买 nike

我正在尝试用蒙特卡洛方法制作动画来计算 PI,但我遇到了一个问题,绘制绘图后它消失了,实际上它被其他位置的新绘图取代。

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.animation import FuncAnimation


fig = plt.figure()
plt.xlim(0, 1)
plt.ylim(0, 1)
graph, = plt.plot([], [], 'o')

tries = 1000
inside = 0
dot = np.random.rand(tries, 2)

def animate(i):
graph.set_data(dot[i][0], dot[i][1])


for i in range(0, tries):
if np.sqrt(dot[i][0]**2 + dot[i][1]**2) < 1:
inside += 1
animate(i)
else:
animate(i)

print (float(inside) / tries) * 4

ani = FuncAnimation(fig, animate, frames=20, interval=200)
plt.show()

最佳答案

您的绘图在每次迭代中被新的单点替换的原因是由于 animate 函数中的行。您已经创建了一个 Line2D 对象,并且每次都将其值设置为单个点。纠正此问题的一种方法是对此行进行简单的更改,该函数将变为:

def animate(i):
graph.set_data((dot[:i,0],), (dot[:i,1],))

由于 dot 变量的结构,索引前面的冒号会导致相应列中第 0 行到 i-1 行的所有元素被发送到 Line2D目的。因此,在每次迭代中,您都会用包含一个点的新集合替换先前的一组点。

如果这不是您想要的,请通过评论告诉我。

关于python - matplotlib 动画绘图散点图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50279826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com