我正在使用osmnx创建graph_from_point。我想将该图保存为PNG图像,但是创建了一个补充文件,为我提供了节点的经/纬度坐标以及已保存的PNG文件中的PIXEL坐标。
本教程:https://matplotlib.org/users/transforms_tutorial.html建议应该能够将“从数据转换为显示坐标系”(我知道存在潜在的显示vs保存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)
答案 0 :(得分:0)
我不确定networkx和matplotlib之间的关系。
OSMnx / NetworkX与matplotlib之间没有固有的关系。 NetworkX MultiDiGraph对象没有matplotlib轴属性,例如transData。我建议阅读OSMnx documentation。 OSMnx可以通过matplotlib 绘制图形,并将图形和轴返回给您。然后,您可以根据需要操作并使用该轴。