从txt文本中读取数据并画动态三维点图
程序中实现动态三维图绘制,添加图标题,坐标轴标题,坐标轴数值范围,两种绘图模式,一种动态画图(所有点均保留),另一种每次仅显示一个点。
三维坐标轴设置区间,需要通过Axes3D创建ax,否则其他方式无法设置z轴范围。
每次仅显示一个点时,需要添加一行程序,通过plt.cla()清除当前ax,实现每次只显示一个点。
画折线图时可以将for循环中的点改为列表,每次apppend一个点的数据,即可实现动态折线图绘制。
plt.pause()可以设置更新速度。
import matplotlib as mpl
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import pyplot as plt
import numpy as np
import math
with open("c_z.txt", 'r') as f:
my_data = f.readlines()
#print(my_data
for line in my_data:
line_data = line.split()
lz.append(float(line_data[0]))
lz = list(lz)
ax = Axes3D(fig)
ax.set_title('Relative Coordinates')
ax.set_xlabel("X")
ax.set_ylabel("Y")
ax.set_zlabel("Z")
ax.set_xlim(-3500, 3500)
ax.set_ylim(0, 7000)
ax.set_zlim(-2000, 5000)
for i in range(len(lx)):
#x = list(range(0, i+1))
#plt.cla()
ax.set_title('Relative Coordinates')
ax.set_xlabel("X")
ax.set_ylabel("Y")
ax.set_zlabel("Z")
ax.set_xlim(-3500, 3500)
ax.set_ylim(0, 7000)
ax.set_zlim(-2000, 5000)
x = lx[i]
y = ly[i]
z = lz[i]
ax.plot(x,z,y, c = 'r', linewidth=1, marker="*", markeredgecolor='b', markerfacecolor='r')
plt.pause(0.5)
plt.show()