df['subset'] = np.select([df.col3 < 150, df.col3 < 400, df.col3 < 600], [0,
    1, 2], -1)
for color, label in zip('bgrm', [0, 1, 2, -1]):
    subset = df[df.subset == label]
plt.scatter(subset.col1, subset.col2, s=120, c=color, label=str(label))
plt.legend()
making matplotlib scatter plots from dataframes in Python's pandas