我正在使用下面的代码在pyplot中生成一个散点图,我希望9个类中的每一个都以不同的颜色绘制。每个班级有多个点。Pyplot scatterplot图例不适用于较小的样本尺寸
我不明白为什么图例不适用于较小的样本量。
def plot_scatter_test(x, y, c, title):
data = pd.DataFrame({'x': x, 'y': y, 'c': c})
classes = len(np.unique(c))
colors = cm.rainbow(np.linspace(0, 1, classes))
ax = plt.subplot(111)
for s in range(0,classes):
ss = data[data['c']==s]
plt.scatter(x=ss['x'], y=ss['y'],c=colors[s], label=s)
ax.legend(loc='lower left',scatterpoints=1, ncol=3, fontsize=8, bbox_to_anchor=(0, -.4), title='Legend')
plt.show()
我的数据是这样的
当我通过调用
plot_scatter_test(test['x'], test['y'],test['group'])
我得到的图表中不同的颜色绘制这一点,但传说是单一颜色
所以为了确保我的数据正常,我使用相同类型的数据创建了一个随机数据帧。现在我得到了不同的颜色,但由于它们不是连续的,所以还是有些问题。
test2 = pd.DataFrame({
'y': np.random.uniform(0,1400,36),
'x': np.random.uniform(-250,-220,36),
'group': np.random.randint(0,9,36)
})
plot_scatter_test(test2['x'], test2['y'],test2['group'])
最后,我创建的360个数据点的更大的阴谋,一切看起来我希望它的方式。我究竟做错了什么?
test3 = pd.DataFrame({
'y': np.random.uniform(0,1400,360),
'x': np.random.uniform(-250,-220,360),
'group': np.random.randint(0,9,360)
})
plot_scatter_test(test3['x'], test3['y'],test3['group'])
您尝试分配颜色的方式对我来说没有意义。你能非常精确地知道颜色应该代表什么? – ImportanceOfBeingErnest
颜色只是每个组的任意视觉差异。我一直在仔细查看并发布它作为答案,所以我碰巧找到了一个修复程序。 – ElPresidente
这不是一个修复,请参阅我的答案。 – ImportanceOfBeingErnest