#3d dynamic scatterplot
import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import time
plt.ion()
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
s=0
a=1
b=2
for i in range(0, 10):
s=a+b
ax.set_xlabel('X axis')
ax.set_ylabel('Y axis')
ax.set_zlabel('Z axis')
x = np.random.rand(5, 3)
y = np.random.rand(5, 3)
z = np.random.rand(5, 3)
#ax.cla()
ax.scatter(x[:, 0], y[:, 1], z[:, 2])
plt.draw()
time.sleep(1) #make changes more apparent/easy to see
a=a+1
b=b+2
if s>10:
break;
此图每次迭代都会生成一组点。但是在所有迭代结束时,不可能区分不同代的点。那么有可能以不同的方式为每一代点着色吗?此外,它应该可以进行n次迭代。
答案 0 :(得分:1)
添加颜色列表并迭代它们:
e.g。将这些行添加到您的代码中
colors = ['#8ffe09','r','#0033ff','#003311','#993333','#21c36f','#c46210','#ed3cca','#ffbf00','g','#000000'] # a list of colours
ax.scatter(x[:, 0], y[:, 1], z[:, 2],color=colors[a-1]) # use the color kwarg
您的代码将是:
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import time
colors = ['#8ffe09','r','#0033ff','#003311','#993333','#21c36f','#c46210','#ed3cca','#ffbf00','g','#000000']
plt.ion()
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
s=0
a=1
b=2
for i in range(0, 10):
s=a+b
ax.set_xlabel('X axis')
ax.set_ylabel('Y axis')
ax.set_zlabel('Z axis')
x = np.random.rand(5, 3)
y = np.random.rand(5, 3)
z = np.random.rand(5, 3)
#ax.cla()
ax.scatter(x[:, 0], y[:, 1], z[:, 2],color=colors[a-1])
plt.draw()
time.sleep(1) #make changes more apparent/easy to see
a=a+1
b=b+2
if s>10:
break;