The coding below is my code. I would like to label the axis after it print all the data and the mark for each data. I don't know why the label name only display at the begin.
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.animation as animation
np.set_printoptions(threshold=np.inf)
fig = plt.figure()
ax1 = fig.add_subplot(111, projection='3d')
def init():
global points
points = np.loadtxt('Surface.txt')
def animate(i):
ax1.clear()
ax1.plot(points[:i, 0], points[:i, 1], points[:i, 2])
ani = animation.FuncAnimation(fig, animate, init_func=init, interval = 1000)
ax1.set_xlabel('x')
ax1.set_ylabel('y')
ax1.set_zlabel('z')
plt.show()
The content of the Surface.txt is
0 0 3
1 1 4
2 4 8
4 16 6
5 25 5
6 36 3
CodePudding user response:
You can accomplish that by also adding the set_label
commands inside the def animate()
function like this
def animate(i):
ax1.clear()
ax1.plot(points[:i, 0], points[:i, 1], points[:i, 2])
ax1.set_xlabel('x')
ax1.set_ylabel('y')
ax1.set_zlabel('z')
So the final program will look like shown below :
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.animation as animation
np.set_printoptions(threshold=np.inf)
fig = plt.figure()
ax1 = fig.add_subplot(111, projection='3d')
def init():
global points
points = np.loadtxt('Surface.txt')
def animate(i):
ax1.clear()
ax1.plot(points[:i, 0], points[:i, 1], points[:i, 2])
ax1.set_xlabel('x')
ax1.set_ylabel('y')
ax1.set_zlabel('z')
ani = animation.FuncAnimation(fig, animate, init_func=init, interval = 1000)
ax1.set_xlabel('x')
ax1.set_ylabel('y')
ax1.set_zlabel('z')
plt.show()