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
Advertisement
Answer
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()