Неупорядоченные оси на диаграмме рассеяния - PullRequest
0 голосов
/ 26 марта 2019

Я пытаюсь построить кластер, используя точечный график. У меня есть массив цветов кластеров и массивов 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()

Я предполагаю, что оси должны оставаться упорядоченными, но они не

1

Ответы [ 2 ]

0 голосов
/ 26 марта 2019

Как сказал @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()

Надеюсь, это помогло.

0 голосов
/ 26 марта 2019

Просто отсортируйте массивы осей

sorted(list_var)

или

list_var.sort()

даже у массива numpy есть метод sort()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...