Python matplotlib散点图 - 一个散点图中的不同标记

Mar*_*osh 1 python matplotlib

我想展示一些观点.这是我的代码:

plt.scatter(y[:,0],y[:,1],c=col)
plt.show()
Run Code Online (Sandbox Code Playgroud)

就像col我一样:

Col:  [1 1 0 1 1 1 1 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 1 1 0 0 0 0 1 1 0 1 1 0 0 0 0
 0 0 0 0 0 0 0 1 1 0 1 1 0 1 0 0 1 0 1 1 0 1 0 1 0 0 1 1 1 1 1 1 1 1 1 0 0
 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 0 0]
Run Code Online (Sandbox Code Playgroud)

所以我有两种不同颜色的点.但我也希望有两种不同的标记.我该怎么做?markers=col给出错误.

Imp*_*est 14

您可以为每个标记使用一个散点图。

markers = ["s","o"]
for i, c in enumerate(np.unique(col)):
    plt.scatter(y[:,0][col==c],y[:,1][col==c],c=col[col==c], marker=markers[i])
Run Code Online (Sandbox Code Playgroud)

有关在单个散点图中使用多个标记的方法,请参阅此答案


jak*_*vdp 9

Matplotlib在一次分散调用中不支持不同的标记.你必须使用两个不同的电话scatter; 例如:

plt.scatter(y[col == 0, 0], y[col == 0, 1], marker='o')
plt.scatter(y[col == 1, 0], y[col == 1, 1], marker='+')
Run Code Online (Sandbox Code Playgroud)