我正在尝试使用散点图绘制集群。我有一个簇颜色数组以及x和y数组,但是当我绘制它们时,x和y轴采用输入数组的顺序
我已经检查了另一个相似的问题,但这似乎不是这里的问题。坦白说,我不明白问题出在哪里。
data = [['11', '2'], ['1', '19'], ['2', '1'], ['17', '4'], ['5', '4'], ['7', '12'], ['14', '5'], ['19', '6'], ['19', '9'], ['6', '15'], ['6', '17'], ['6', '10'], ['3', '11'], ['14', '19'], ['10', '8'], ['9', '2'], ['3', '9'], ['7', '14'], ['14', '11'], ['13', '19'], ['1', '13'], ['9', '18'], ['6', '14'], ['9', '7'], ['15', '12'], ['14', '10'], ['1', '13'], ['19', '13'], ['12', '15'], ['16', '2'], ['18', '14'], ['9', '8'], ['13', '7'], ['14', '13'], ['6', '8'], ['16', '2'], ['19', '18'], ['8', '10'], ['6', '17'], ['4', '8'], ['14', '10'], ['15', '19'], ['7', '6'], ['4', '14'], ['7', '19'], ['10', '18'], ['20', '3'], ['5', '15'], ['8', '11'], ['18', '13'], ['8', '9'], ['20', '5'], ['10', '12'], ['17', '18'], ['6', '12'], ['5', '8'], ['17', '13'], ['10', '7'], ['16', '14'], ['4', '16'], ['12', '2'], ['14', '11'], ['16', '3'], ['11', '17'], ['14', '19'], ['14', '13'], ['17', '18'], ['10', '20'], ['15', '4'], ['10', '13'], ['8', '6'], ['2', '14'], ['18', '5'], ['10', '8'], ['4', '19'], ['12', '15'], ['10', '15'], ['7', '18'], ['8', '20'], ['11', '18'], ['13', '15'], ['10', '19'], ['6', '2'], ['14', '20'], ['6', '12'], ['3', '14'], ['7', '2'], ['19', '9'], ['18', '11'], ['9', '3'], ['13', '6'], ['11', '1'], ['10', '11'], ['16', '2'], ['16', '7'], ['9', '12'], ['1', '17'], ['5', '11'], ['11', '10'], ['4', '15']]
clusters = [1, 0, 0, 2, 0, 3, 4, 2, 0, 5, 5, 3, 6, 7, 8, 1, 6, 3, 9, 7, 6, 10, 3, 8, 9, 9, 6, 11, 12, 2,
11, 8, 4, 9, 3, 2, 0, 3, 5, 3, 9, 7, 8, 5, 5, 10, 0, 5, 3, 11, 3, 2, 3, 7, 3, 3, 9, 8, 9, 5, 1, 9, 2, 7, 7, 9, 7, 10, 2, 12, 8, 6, 2, 8, 5, 12, 12, 5, 10, 7, 12, 10, 0, 7, 3, 6, 1, 0, 11,
1, 4, 1, 3, 2, 4, 3, 0, 3, 8, 5]
x,y = zip(*data)
plt.scatter(np.array(x), np.array(y), c = clusters)
plt.show()
我认为轴应该保持顺序,但不是
答案 0 :(得分:0)
只需对轴数组进行排序
sorted(list_var)
或
list_var.sort()
偶数个numpy数组都有一个sort()
方法
答案 1 :(得分:0)
正如@Guybrush所说,您将元素作为字符串包含在数据中,因此您可以尝试以下操作:
data = [[int(i[0]), int(i[1])] for i in data]
,然后是所有其他代码,这些代码现在具有按排序顺序显示的轴:
x,y = zip(*(data))
clusters = [1, 0, 0, 2, 0, 3, 4, 2, 0, 5, 5, 3, 6, 7, 8, 1, 6, 3, 9, 7, 6, 10, 3, 8, 9, 9, 6, 11, 12, 2,
11, 8, 4, 9, 3, 2, 0, 3, 5, 3, 9, 7, 8, 5, 5, 10, 0, 5, 3, 11, 3, 2, 3, 7, 3, 3, 9, 8, 9, 5, 1, 9, 2, 7, 7, 9, 7, 10, 2, 12, 8, 6, 2, 8, 5, 12, 12, 5, 10, 7, 12, 10, 0, 7, 3, 6, 1, 0, 11,
1, 4, 1, 3, 2, 4, 3, 0, 3, 8, 5]
plt.scatter(np.array(x), np.array(y), c = clusters)
plt.show()
希望这有所帮助。