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

13

我想展示一些要点。这是我的代码:

plt.scatter(y[:,0],y[:,1],c=col)
plt.show()

而作为 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]

我有两种不同颜色的点,但是我也想要两个不同的标记。应该如何做?markers=col会出错。

3个回答

23

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

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

如果您想在单个散点图中使用多个标记,请参阅此答案


21

Matplotlib不支持一次调用scatter使用不同的标记。你需要使用两个不同的scatter调用,例如:

Matplotlib 不支持在一个 scatter 调用中使用不同的标记。您需要使用两个不同的 scatter 调用。例如:

plt.scatter(y[col == 0, 0], y[col == 0, 1], marker='o')
plt.scatter(y[col == 1, 0], y[col == 1, 1], marker='+')

0
在我的情况下,我将特征存储在一个变量 x_train 中,标签存储在另一个变量 y_train 中。
因此,我将问题分解为两个部分:选择数据,即 label=0 的数据,并绘制它。
然后选择 label=1 的数据并绘制它。
zerodataf1=X_train[:,0][y_train==0]
zerodataf2=X_train[:,1][y_train==0]
plt.scatter(zerodataf1,zerodataf2,c='blue',marker='o',label='Not Admitted')
plt.scatter(X_train[:,0][y_train==1],X_train[:,1][y_train==1],c='red',marker='+',label='Admitted')
plt.xlabel('Exam 1')
plt.ylabel('Exam 2')
plt.title('Scatter Plot ...')
plt.legend()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接