Составьте маршруты с использованием шаблона в качестве цвета Osmnx и Python - PullRequest
0 голосов
/ 08 января 2020

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

Это только график маршрута 1:

Plot of route 1

Это только участок маршрута 2:

Plot of route 2

Это участок маршрута 1 и 2 вместе:

Plot of route 1 and 2 together

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

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?

1 Ответ

0 голосов
/ 15 января 2020

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')

для построения маршрутов на нашем ранее сгенерированном участке.

...