Получить координаты ДИСПЛЕЯ (пикселя) узла в сети X MultiDiGraph (производится OSMNX)
Я создаю graph_from_point с помощью osmnx. Я хочу сохранить этот график в изображение PNG, но создал дополнительный файл, предоставляющий мне координаты широты / долготы узлов вместе с их координатами PIXEL в сохраненном файле PNG.
Этот учебник: https://matplotlib.org/users/transforms_tutorial.html предлагает уметь "преобразовывать ваши данные в вашу систему координат отображения" (я знаю, что существует потенциальная проблема отображения и сохранения DPI), которая, по-видимому, будь то, что мне нужно, но если я попытаюсь использовать transData, я получу ошибку ниже.
G = ox.graph_from_point(map_query, distance=map_distance, network_type=map_network_type, simplify=True)
list(G.nodes.data())
# {'y': 51.5025637, 'x': 0.1111431, 'osmid': 95944704}
print type(G.transData)
AttributeError: 'MultiDiGraph' object has no attribute 'transData'
Это правильный подход, но я ссылаюсь не на тот объект? Или это не действительно? Я не уверен в связи между networkx и matplotlib. Моей конечной целью было бы иметь:
{'y': 51.5025637, 'x': 0.1111431, 'osmid': 95944704, 'pixel' : (23, 467)}
Пиксель - это ссылка на сохраненный файл, созданный:
ox.plot_graph(G, save=True, file_format='png', filename='example', fig_height=my_fig_height, dpi=my_dpi)
1 ответ
Я не уверен в связи между networkx и matplotlib.
Не существует внутренней связи между OSMnx/NetworkX и matplotlib. Объекты NetworkX MultiDiGraph не имеют атрибутов оси matplotlib, таких как transData. Я бы предложил прочитать документацию OSMnx. OSMnx может построить график через matplotlib и вернуть вам фигуру и ось. Затем вы можете манипулировать этой осью и работать с ней по своему усмотрению.