Search code examples
pythonmatplotlibmarkers

Conditional marker matplotlib


I plot the result of a Gaussian Mixture when I have 3 type of points that are determinate by a prediction. I have a different color for each cluster predicted and now I would like to have a different marker instead of color.

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

It works perfectly for colors like this:

enter image description here

But I can't do the same thing with different markers, it doesn't recognize a list of markers.

How can I do to have a different marker for each cluster (0,1,2) like I have with colors?


Solution

  • Change the line with plt.scatter in it to this instead:

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