Построение графика по узлам

У меня есть набор кластеров, и я извлек координаты центра тяжести каждого кластера и нанес их на график рассеяния. Вот координаты:

112 59
214 90
244 182
254 167
255 112
261 139
283 152
291 134
314 138
334 49
333 34

И следующий код для построения графика рассеяния:

import pylab as pl
import matplotlib.pyplot as plt
import numpy as np

data = np.loadtxt('centroid_coordinates.txt')
pl.scatter(data[:,0], data[:,1])
pl.xlabel('x-coordinate')
pl.ylabel('y-coordinate')


#print result
plt.title('Centroids')
pl.show()

... что приводит к следующему: Построение графика по узлам

И теперь я хотел бы соединить узлы центроида вместе, чтобы сформировать график, чтобы показать его отношение пространственной связности. Любые предложения сделать это?

Вы можете использовать пакет Python сетьx для построения графиков и их отображения.

F Blanchet 01.05.2019 13:53

Спасибо, сейчас посмотрю.

Yu.L 01.05.2019 13:56
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
2
333
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

networkx твой друг:

import matplotlib.pyplot as plt
import networkx as nx
import itertools

nodes = [[112, 59],
[214, 90],
[244, 182],
[254, 167],
[255, 112],
[261, 139],
[283, 152],
[291, 134],
[314, 138],
[334, 49],
[333, 34]]

# initialise empty graph
G = nx.Graph()

# create dictionary for node positions
positions = {}
for node, properties in enumerate(nodes):
    positions[node] = properties

# add the nodes to the graph
G.add_nodes_from(positions.keys())

# list all possible combinations of nodes within the graph    
edges = itertools.product(positions.keys(), positions.keys())

# and add them to the graph
G.add_edges_from(edges)

# draw nodes and edges, positioned at the centroids
nx.draw_networkx_nodes(G, pos=positions)
nx.draw_networkx_edges(G, pos=positions)

Просто быстрый вопрос. Есть ли способ не перечислять все комбинации? Достаточно простого связного графа, так как некоторые графы имеют слишком много узлов, и граф становится слишком переполненным. Ваше здоровье!

Yu.L 02.05.2019 15:25

ознакомьтесь с документацией nx.draw_networkx_edges. вы можете передать дополнительный параметр edgelist, который позволяет вам указать, какие из них вы хотите показывать.

warped 02.05.2019 15:44

Другие вопросы по теме