Я хочу установить цвет разных рассеивателей, и здесь появляется ошибка, как показано в следующем коде:
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import numpy as np
points = np.array([[1,2,3]])
labels = np.array([1])
colors = [[255, 0, 0],[0, 255, 0],[0, 0, 255], [255, 255, 0],[255, 0, 255],[0,255,255],[128,255,128]]
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
for i in range(0,len(points)):
print('point and label')
print(points[i], labels[i])
color = colors[labels[i]-1]
print([0,0,0])
ax.scatter(points[i,0], points[i,1],zs=points[i,2],c=[0,0,0]) # work
print(color)
ax.scatter(points[i,0], points[i,1],zs=points[i,2],c=color) # error
print('finish')
plt.savefig('a.jpg',format='jpg')
Проблема в том, что, если я установлю c
для ax.scatter
как [0,0,0], это сработает. Однако, если я установлю его в список, выбранный из colors
, который я определил, он сообщит об ошибках.
Полное сообщение для печати отображается следующим образом (включая сообщение об ошибке):
point and label
(array([1, 2, 3]), 1)
[0, 0, 0]
[255, 0, 0]
Traceback (most recent call last):
File "plot.py", line 47, in <module>
ax.scatter(points[i,0], points[i,1],zs=points[i,2],c=color) # error
File "mypath/local/lib/python2.7/site-packages/mpl_toolkits/mplot3d/axes3d.py", line 2362, in scatter
xs, ys, s=s, c=c, *args, **kwargs)
File "mypath/local/lib/python2.7/site-packages/matplotlib/__init__.py", line 1867, in inner
return func(ax, *args, **kwargs)
File "mypath/local/lib/python2.7/site-packages/matplotlib/axes/_axes.py", line 4293, in scatter
.format(c.shape, x.size, y.size))
AttributeError: 'list' object has no attribute 'shape'
Что не так с моим кодом и как установить цвет 3D-разброса?
Спасибо!