所以,
数据如下所示:
(空格表示不同的列,数据表示10个粒子围绕中心粒子"太阳"并且在不同的时间步长,在这种情况下是每1,000天,持续360万天)
我一直遇到麻烦,试图使它的绘图,我想知道我一直在做错什么,以及最好的方式前进,我的最终目标,使数据的三维动画(x,y,z随着时间的推移)
我已经尝试了很多东西,但我只是把简单的绘图版本,我昨天尝试(你会看到一些剩余的变量和导入库的
我的代码:
import numpy as np
import math
import csv
import matplotlib.pyplot as plt
from random import randint
import matplotlib.animation
from matplotlib.animation import FuncAnimation
import mpl_toolkits.mplot3d.axes3d as p3
import matplotlib.animation as animation
from mpl_toolkits import mplot3d
import pandas as pd
arc = open('data10id_1S.csv', 'r')
lines = arc.readlines()
a = []
newList = []
for i in range(0, len(lines)):
if lines[i][:2] == 't=':
if i != 0:
newList = newList + [a]
s = lines[i].replace(',','').split()
t = float(s[1])
else:
s = lines[i].replace(',','').split()
# storing the particles data
data = pd.DataFrame[float(s[1]),
float(s[3]),
float(s[9]),
float(s[5]),
float(s[11]),
float(s[7]),
float(s[13])]
a = [data]
# setting the particels variables
m = float(s[1])
x = float(s[3])
vx = float(s[9])
y = float(s[5])
vy = float(s[11])
z = float(s[7])
vz = float(s[13])
e = float(s[15])
axis = float(s[17])
a = a + [data]
# setting the central particles variables
px = a[0][1]
pvx = a[0][2]
py = a[0][3]
pvy = a[0][4]
pz = a[0][5]
pvz = a[0][6]
pm = a[0][0]
fig = plt.figure()
ax = p3.Axes3D(fig)
lines = ax.plot(x,y,z)
ax.set_xlim3d([-20.0, 20.0])
ax.set_xlabel('x')
ax.set_ylim3d([-20.0, 20.0])
ax.set_ylabel('Y')
ax.set_zlim3d([-20.0, 20.0])
ax.set_zlabel('Z')
ax.set_title("3D Plot over Time")
line_ani = animation.FuncAnimation(fig, t, 3652500, fargs=(data, lines), interval=10, blit=True)
plt.show()
这里有一个文件的链接我不知道为什么它是这种格式,但这里是整个事情(我在一个Linux虚拟机,我知道如何共享它的唯一方式是通过gdrive)
https://docs.google.com/spreadsheets/d/1NSgy0laiBW_lAHcXwhuWFq6LhS8oEA2oWeVjjtXQfWI/edit?usp=sharing
1条答案
按热度按时间ijxebb2r1#
概述
这是一个很好的起点。这是一个绘制位置随时间变化的程序,作为动画的一部分。它真正做的是从数据文件创建坐标
(x,y,z)
列表。一旦列表创建好,你就可以编写一个简短的animate函数来绘制给定时间出现的所有点。这是一个最小的例子!
有很多方向你可以去(更新大小/质量的对象,路径跟踪,颜色编码等)。玩得开心!
有用链接
动画文档:
https://matplotlib.org/stable/api/animation_api.html
3d散点图:
https://matplotlib.org/stable/gallery/mplot3d/scatter3d.html
散布动画:
Matplotlib 3D scatter animations
代码