Постройте маршруты, используя узор в качестве цвета Osmnx и Python

Я хотел бы построить два маршрута, которые частично перекрываются, используя osmnx и python. Я использовал желтый цвет для маршрута 1 и синий для маршрута 2. Чтобы прояснить, что я имею в виду, используя изображения:

Это сюжет только для маршрута 1:

Участок маршрута 1

Это сюжет только для маршрута 2:

Участок маршрута 2

Это сюжет маршрутов 1 и 2 вместе:

График маршрута 1 и 2 вместе

Это примерный фрагмент моего кода:

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 пересекаются.

Кто-нибудь знает, как определить цвет, который является рисунком, например, синий и желтый, чтобы я мог передать его аргументу route_color в функции plot_graph_routes?


person katherinejohnson    schedule 08.01.2020    source источник
comment
Может быть, вы могли бы попробовать, работает ли это решение с osmnx?   -  person JohanC    schedule 08.01.2020
comment
Это именно то, как я хочу, чтобы это выглядело. Я мог бы попытаться получить координаты x, y маршрутов и построить их, как в приведенном выше решении. Буду держать вас в курсе, если все получится.   -  person katherinejohnson    schedule 13.01.2020


Ответы (1)


1) Я построил график без маршрутов, используя:

ox.plot_graph(Graph)

2) Часть, которую я хочу быть желтой И синей, является пересечением route1 и route2:

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

Часть, которую я хочу быть желтой, - это разница между route1 и route2:

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

2) Поскольку мои маршруты route1 и route2 являются списками идентификаторов OSM, то также и yellow_and_blue и yellow. Я извлек их координаты 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')

для нанесения маршрутов на наш ранее созданный график.

person katherinejohnson    schedule 15.01.2020