gpt4 book ai didi

Python Matplotlib 更新散点图

转载 作者:太空宇宙 更新时间:2023-11-03 21:07:03 25 4
gpt4 key购买 nike

我尝试编写一个简单的脚本,它更新每个时间步t的散点图。我想做得尽可能简单。但它所做的只是打开一扇我什么也看不见的 window 。 window 就结冰了。这可能只是一个小错误,但我找不到它。

data.dat 的格式为

                x      y
Timestep 1 1 2
3 1
Timestep 2 6 3
2 1

(文件仅包含数字)

import numpy as np
import matplotlib.pyplot as plt
import time

# Load particle positioins
with open('//home//user//data.dat', 'r') as fp:
particles = []
for line in fp:
line = line.split()
if line:
line = [float(i) for i in line]
particles.append(line)

T = 100
numbParticles = 2

x, y = np.array([]), np.array([])

plt.ion()
plt.figure()
plt.scatter(x,y)
for t in range(T):
plt.clf()
for k in range(numbP):
x = np.append(x, particles[numbParticles*t+k][0])
y = np.append(y, particles[numbParticles*t+k][1])
plt.scatter(x,y)
plt.draw()
time.sleep(1)
x, y = np.array([]), np.array([])

最佳答案

制作动画最简单、最干净的方法是使用 matplotlib.animation module .

由于散点图返回一个 matplotlib.collections.PathCollection,因此更新它的方法是调用其 set_offsets 方法。您可以向其传递一个形状 (N, 2) 的数组或 N 个 2 元组的列表 - 每个 2 元组都是一个 (x,y) 坐标。

例如,

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

T = 100
numbParticles = 2
particles = np.random.random((T,numbParticles)).tolist()
x, y = np.array([]), np.array([])

def init():
pathcol.set_offsets([[], []])
return [pathcol]

def update(i, pathcol, particles):
pathcol.set_offsets(particles[i])
return [pathcol]

fig = plt.figure()
xs, ys = zip(*particles)
xmin, xmax = min(xs), max(xs)
ymin, ymax = min(ys), max(ys)
ax = plt.axes(xlim=(xmin, xmax), ylim=(ymin, ymax))
pathcol = plt.scatter([], [], s=100)

anim = animation.FuncAnimation(
fig, update, init_func=init, fargs=(pathcol, particles), interval=1000, frames=T,
blit=True, repeat=True)
plt.show()

关于Python Matplotlib 更新散点图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55329412/

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