osmnx.plot_graph 如何确定哪些边缘获得哪些颜色?

How does osmnx.plot_graph determine which edges get which colors?

我已经学习了这个教程: https://towardsdatascience.com/creating-beautiful-maps-with-python-6e1aae54c55c 而上面的这个是从中派生的。

他们将边缘颜色列表传递给 plot_graph 函数 像这样:

fig, ax = ox.plot_graph(gdf, node_size=0, bbox = (north, south, east, west),figsize=(height, width),
                    dpi = 96,bgcolor = bgcolor,
                    save = False, edge_color=roadColors,
                    edge_linewidth=roadWidths, edge_alpha=1)

我不认为他们是按照教程指示的方式分配的。

在 github 我发现 get_edge_colors_by_attr 似乎考虑了属性。

颜色是如何分配的?

我之所以这么问是因为我想根据他们的 openstreetmap 标签绘制不同颜色的“高速公路”。

How does osmnx.plot_graph determine which edges get which colors?

你可以看看它是如何做到的here。本质上,它要么将一种颜色应用于所有边,要么,如果您将颜色列表传递给它,它将列表中的第一种颜色分配给图形中的第一条边,将第二种颜色分配给第二条边,将第三种颜色分配给第三条边,等等。

Specifically I am asking because I'd like to plot "highways" in different colors based on their openstreetmap tag.

您可以根据边的高速公路属性值创建颜色列表:

import osmnx as ox
G = ox.graph_from_place('Piedmont, California, USA', network_type='drive')

# assign colors to edges based on "highway" value
hwy_color = {'residential': 'gray', 
             'secondary': 'r',
             'tertiary': 'y',
             'tertiary_link': 'b',
             'unclassified': 'm'}
edges = ox.graph_to_gdfs(G, nodes=False)['highway']
ec = edges.replace(hwy_color)

# plot graph using these colors
fig, ax = ox.plot_graph(G, edge_color=ec)

此外,您提到了 get_edge_colors_by_attr,但请注意,根据 the docs,属性必须是数字。