2016-12-12 4 views
1

Я рисую результат гауссовой смеси, когда у меня есть 3 типа точек, которые определяются предсказанием. У меня есть другой цвет для каждого предсказанного кластера, и теперь я хотел бы иметь другой маркер вместо цвета.Условный маркер matplotlib

colors=['pink' if i==0 else 'skyblue' if i==1 else 'lightgreen' for i in resultGM] 
markers=['c' if i==0 else 'o' if i==1 else 'D' for i in resultGM] 
ax=plt.gca() 
ax.scatter(datas[:,0], datas[:,1], alpha=0.8, c=colors,marker=markers) 
plt.title("Calling "+name_snp) 
plt.xlabel('LogRatio') 
plt.ylabel('Strength') 
plt.show() 

Он отлично работает для цветов, как это: enter image description here

Но я не могу сделать то же самое с различными маркерами, он не распознает список маркеров.

Как сделать, чтобы иметь разные маркеры для каждого кластера (0,1,2), как у меня с цветами?

+1

Вы должны петлю через них. См. Здесь http://stackoverflow.com/questions/41078331/matplotlib-read-marker-direction-from-a-file/41078504#41078504 –

ответ

2

Изменить строку с plt.scatter в ней вместо этого:

for x, y, c, m in zip(datas[:,0], datas[:,1], colors, markers) 
    ax.scatter(x, y, alpha=0.8, c=c,marker=m)