To achieve this result you need to call scatter
multiple times on the same axis. The good news is you can automate this for your given data:
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
y = [2,1,3,6,7]
cluster = ['^','^','^','s','s']
fig, ax = plt.subplots()
for xp, yp, m in zip(x, y, cluster):
ax.scatter([xp],[yp], marker=m)
plt.show()
A neater solution would be to filter your input data using your cluster information. We can do that using numpy
.
import matplotlib.pyplot as plt
import numpy as np
x = np.array([1,2,3,4,5])
y = np.array([2,1,3,6,7])
cluster = np.array([1,1,1,2,2])
fig, ax = plt.subplots()
ax.scatter(x[cluster==1],y[cluster==1], marker='^')
ax.scatter(x[cluster==2],y[cluster==2], marker='s')
plt.show()
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…