Недопустимый rgba arg "#" в matplotlib

Я не могу понять, как использовать цвета, пытаясь создать график рассеяния в matplotlib.

Я пытаюсь построить несколько диаграмм разброса с разными цветовыми точками, чтобы показать кластеры.

colors=['#12efff','#eee111','#eee00f','#e00fff','#123456','#abc222','#000000','#123fff','#1eff1f','#2edf4f','#2eaf9f','#22222f' '#eeeff1','#eee112','#00ef00','#aa0000','#0000aa','#000999','#32efff','#23ef68','#2e3f56','#7eef1f','#eeef11'] C=1 fig = plt.figure() ax = fig.gca(projection='3d') for fgroups in groups: X=[np.random.rand(50),np.random.rand(50),np.random.rand(50)] y=[np.random.rand(50),np.random.rand(50),np.random.rand(50)] Z=[np.random.rand(50),np.random.rand(50),np.random.rand(50)] C=(C+1) % len(colors) ax.scatter(X,Y,Z, s=20, c=colors[C], depthshade=True) plt.show() 

Ошибка, которую я получаю, выглядит следующим образом:

ValueError: to_rgba: Неверный rgba arg "#" to_rgb: Недопустимый rgb arg "#" не смог преобразовать строку в float: #

Кажется, что он рассматривает эти аргументы rgb как float.

Однако в matplotlib документах цвета написаны в этом стиле http://matplotlib.org/api/colors_api.html

Что мне не хватает?

Его просто простая опечатка: вам не хватает запятой в конце первой строки colors (между '#22222f' и '#eeeff1' ), что означает, что две записи объединяются в строку, которую matplotlib не может интерпретировать как цвет.

 for i in colors: print i #12efff #eee111 #eee00f #e00fff #123456 #abc222 #000000 #123fff #1eff1f #2edf4f #2eaf9f #22222f#eeeff1 #eee112 #00ef00 #aa0000 #0000aa #000999 #32efff #23ef68 #2e3f56 #7eef1f #eeef11 

Если вы добавите туда запятую, все будет хорошо.

Чтобы заставить ваш «MCVE» работать, мне пришлось добавить импорт модулей и предположить, что groups имеют такую ​​же длину, как и colors :

 import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import numpy as np colors=['#12efff','#eee111','#eee00f','#e00fff','#123456','#abc222','#000000','#123fff','#1eff1f','#2edf4f','#2eaf9f','#22222f', '#eeeff1','#eee112','#00ef00','#aa0000','#0000aa','#000999','#32efff','#23ef68','#2e3f56','#7eef1f','#eeef11'] C=1 fig = plt.figure() ax = fig.gca(projection='3d') groups = range(len(colors)) for fgroups in groups: X=[np.random.rand(50),np.random.rand(50),np.random.rand(50)] Y=[np.random.rand(50),np.random.rand(50),np.random.rand(50)] Z=[np.random.rand(50),np.random.rand(50),np.random.rand(50)] C=(C+1) % len(colors) ax.scatter(X,Y,Z, s=20, c=colors[C], depthshade=True) plt.show() , import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import numpy as np colors=['#12efff','#eee111','#eee00f','#e00fff','#123456','#abc222','#000000','#123fff','#1eff1f','#2edf4f','#2eaf9f','#22222f', '#eeeff1','#eee112','#00ef00','#aa0000','#0000aa','#000999','#32efff','#23ef68','#2e3f56','#7eef1f','#eeef11'] C=1 fig = plt.figure() ax = fig.gca(projection='3d') groups = range(len(colors)) for fgroups in groups: X=[np.random.rand(50),np.random.rand(50),np.random.rand(50)] Y=[np.random.rand(50),np.random.rand(50),np.random.rand(50)] Z=[np.random.rand(50),np.random.rand(50),np.random.rand(50)] C=(C+1) % len(colors) ax.scatter(X,Y,Z, s=20, c=colors[C], depthshade=True) plt.show() 

введите описание изображения здесь