【问题标题】:Plot routes using pattern as a color Osmnx and Python使用模式作为颜色 Osmnx 和 Python 绘制路线
【发布时间】:2020-01-15 18:34:21
【问题描述】:

我想使用 osmnx 和 python 绘制两条在某些部分重叠的路线。我使用黄色作为路线 1 的颜色,使用蓝色作为路线 2。为了澄清我使用图片的意思:

这只是路线1的地块:

这只是路线2的地块:

这是路线1和2一起的情节:

这是我的代码中的示例性 sn-p:

ox.plot_graph_routes(Graph, route1, route_color=['y']*len(route1))
ox.plot_graph_routes(Graph, route2, route_color=['b']*len(route2))
ox.plot_graph_routes(Graph, route1+route2, route_color=['y']*len(route1) + ['b']*len(route(2))

正如您在路线 1 和路线 2 的图中所见,路线 1 和路线 2 重叠的部分使用蓝色/黄色阴影图案或类似图案会更方便。

有谁知道如何定义一种颜色,例如蓝色和黄色,以便我可以将其传递给 plot_graph_routes 函数中的 'route_color' 参数?

【问题讨论】:

  • 也许你可以试试this solution是否也适用于osmnx?
  • 这正是我想要的样子。我可能会尝试获取路线的 x、y 坐标并像上面的解决方案一样绘制它们。如果成功了,我会及时通知你。

标签: python matplotlib osmnx


【解决方案1】:

1) 我使用以下方法绘制了没有路线的图表:

ox.plot_graph(Graph)

2)我想要黄色和蓝色的部分是route1route2的交集:

yellow_and_blue = list(set(route1).intersection(route2))

我只想黄色的部分是route1route2的区别:

yellow = list(set(route1).difference(route2))

2) 因为我的路由route1route2 是OSM ID 列表,所以yellow_and_blueyellow 也是。我使用以下方法提取了它们的 x 和 y 坐标:

yellow_and_blue_x = []
yellow_and_blue_y = []
for node in yellow_and_blue:
    yellow_and_blue_x += [Graph.nodes[node]['x']]
    yellow_and_blue_y += [Graph.nodes[node]['y']]

yellow 也是如此。

3) 现在我们有了想要绘制的路线的 x 和 y 坐标列表,我们可以使用

plt.plot(yellow_and_blue_x, yellow_and_blue_y, linestyle = (0,(5,5)), color = 'yellow')
plt.plot(yellow_and_blue_x, yellow_and_blue_y, linestyle = (5,(5,5)), color = 'blue')

plt.plot(yellow_x, yellow_y, color = 'yellow')

将路线绘制到我们之前生成的图上。

【讨论】:

    猜你喜欢
    • 2021-04-17
    • 2018-12-17
    • 2020-02-06
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    • 2020-06-09
    相关资源
    最近更新 更多