I want to use the scatter plot function of pylab
x = [1,2,3,4,5]
y = [2,1,3,6,7]
there are two clusters in this 5 points, index 1-2(cluster 1) and index 2-4 (cluster 2). The point in cluster 1 should use marker '^', whereas the point in cluster 2 should use marker 's'. so
cluster = ['^','^','^','s','s']
I have tried
fig, ax = pl.subplots()
ax.scatter(x,y,marker=cluster)
pl.show()
This is a toy example, real data have more than 10000 samples
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()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With