条件标记 matplotlib
Conditional marker matplotlib
当我有 3 种类型的点由预测确定时,我绘制了高斯混合的结果。我预测的每个聚类都有不同的颜色,现在我想要一个不同的标记而不是颜色。
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()
它非常适合这样的颜色:
但是我不能用不同的标记做同样的事情,它不识别标记列表。
如何为每个集群设置不同的标记 (0,1,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)
假设 resultGM
是整数标签数组。如果不是,就把它变成一个。对于每个集群,您应该只调用一次 scatter
,而不是像另一个答案所建议的那样,每个数据点调用一次:
colors = ['pink', 'skyblue', 'lightgreen', ...]
markers = ['c', 'o', 'D', ...]
for i in range(resultGM.max()):
mask = (resultGM == i)
ax.scatter(data[mask, 0], data[mask, 1], alpha=0.8, c=colors[i], marker=markers[i])
当我有 3 种类型的点由预测确定时,我绘制了高斯混合的结果。我预测的每个聚类都有不同的颜色,现在我想要一个不同的标记而不是颜色。
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()
它非常适合这样的颜色:
但是我不能用不同的标记做同样的事情,它不识别标记列表。
如何为每个集群设置不同的标记 (0,1,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)
假设 resultGM
是整数标签数组。如果不是,就把它变成一个。对于每个集群,您应该只调用一次 scatter
,而不是像另一个答案所建议的那样,每个数据点调用一次:
colors = ['pink', 'skyblue', 'lightgreen', ...]
markers = ['c', 'o', 'D', ...]
for i in range(resultGM.max()):
mask = (resultGM == i)
ax.scatter(data[mask, 0], data[mask, 1], alpha=0.8, c=colors[i], marker=markers[i])